- ทำความเข้าใจเกี่ยวกับการดำเนินการ I/O ของไฟล์ (File I/O Operations)
1.1 การอ่าน (Reading) และเขียน (Writing) ไฟล์ (Files)
1.2 การจัดการไดเร็กทอรี (Directories) และไฟล์ (Files) - ทำความเข้าใจเกี่ยวกับการทำให้เป็นอนุกรม (Serialization)
2.1 การทำให้เป็นอนุกรมไบนารี (Binary Serialization)
2.2 การทำให้เป็นอนุกรม JSON
การทำแอพเป็นกระบวนการที่ครอบคลุมซึ่งเกี่ยวข้องกับประเด็นสำคัญต่างๆ หนึ่งในองค์ประกอบหลักของกระบวนการทำแอพคือการจัดการข้อมูล ข้อมูลมีบทบาทสำคัญ และการจัดการอย่างมีประสิทธิภาพเป็นสิ่งสำคัญยิ่ง ใน C# นักพัฒนาสามารถจัดการข้อมูลได้อย่างมีประสิทธิภาพผ่านการดำเนินการ File Input/Output (I/O) และการทำให้เป็นอนุกรม บทความนี้แสดงภาพรวมเชิงลึกของแนวคิดเหล่านี้ โดยเฉพาะอย่างยิ่งการทำแอพ
1. ทำความเข้าใจเกี่ยวกับการดำเนินการ I/O ของไฟล์ (File I/O Operations)
ไฟล์ I/O เป็นหนึ่งในส่วนที่สำคัญที่สุดของซอฟต์แวร์หรือแอปพลิเคชันใดๆ ช่วยให้คุณสามารถอ่านและเขียนไฟล์ ซึ่งเป็นสิ่งสำคัญสำหรับการจัดเก็บและดึงข้อมูล ใน C# เนมสเปซ System.IO มีคลาสและเมธอดต่างๆ เพื่อดำเนินการกับไฟล์ I/O
1.1 การอ่าน (Reading) และเขียน (Writing) ไฟล์ (Files)
ใน C# คุณสามารถใช้คลาสStreamReader
และStreamWriter
คลาสเพื่ออ่านและเขียนลงในไฟล์ตามลำดับ คลาสเหล่านี้เป็นส่วนหนึ่งของSystem.IO
เนมสเปซ
นี่คือตัวอย่างพื้นฐานในการเขียนไฟล์:
using System.IO;
StreamWriter writer = new StreamWriter("test.txt");
writer.WriteLine("Hello, World!");
writer.Close();
ในโค้ดด้านบนStreamWriter
มีการสร้างวัตถุใหม่ซึ่งเปิดไฟล์ “test.txt” จากนั้นใช้ วิธีWriteLine
เขียนสตริง “Hello, World!” ไปที่ไฟล์. สุดท้ายClose
เมธอดนี้ถูกเรียกให้ปิดไฟล์และปล่อยทรัพยากรระบบที่เกี่ยวข้องกับตัวเขียน
การอ่านจากไฟล์นั้นง่ายมาก:
using System.IO;
StreamReader reader = new StreamReader("test.txt");
string content = reader.ReadToEnd();
reader.Close();
Console.WriteLine(content);
ในโค้ดนี้StreamReader
วัตถุจะเปิดขึ้นสำหรับ “test.txt” และReadToEnd
ใช้วิธีอ่านเนื้อหาทั้งหมดของไฟล์เป็นสตริง จากนั้นไฟล์จะปิด และเนื้อหาจะถูกพิมพ์ไปยังคอนโซล
1.2 การจัดการไดเร็กทอรี (Directories) และไฟล์ (Files)
C# ยังจัดเตรียม คลาส Directory
และFile
สำหรับจัดการไดเร็กทอรีและไฟล์ตามลำดับ คลาสDirectory
นำเสนอเมธอดแบบสแตติกสำหรับการสร้าง ย้าย และแจกแจงผ่านไดเร็กทอรีและไดเร็กทอรีย่อย ในขณะเดียวกันFile
คลาสจะจัดเตรียมเมธอดแบบสแตติกสำหรับการสร้าง คัดลอก ลบ ย้าย และเปิดไฟล์ และช่วยในการสร้างStreamReader
และStreamWriter
อ็อบเจกต์
2. ทำความเข้าใจเกี่ยวกับการทำให้เป็นอนุกรม (Serialization)
แม้ว่าการดำเนินการ I/O ของไฟล์จะมีความสำคัญ แต่อนุญาตให้อ่านและเขียนข้อมูลข้อความเท่านั้น แต่ถ้าคุณต้องการจัดเก็บหรือส่งโครงสร้างข้อมูลที่ซับซ้อนมากขึ้น เช่น อ็อบเจกต์ล่ะ นั่นคือที่มาของการทำให้เป็นอนุกรม
การทำให้เป็นอนุกรมเป็นกระบวนการแปลงสถานะของออบเจกต์เป็นไบต์สตรีม ซึ่งสามารถคงอยู่ในสื่อจัดเก็บข้อมูล เช่น ไฟล์ หรือส่งผ่านเครือข่ายได้ การดีซีเรียลไลเซชันเป็นกระบวนการย้อนกลับ โดยจะแปลงสตรีมไบต์กลับเป็นวัตถุ
ใน C# การทำให้เป็นอนุกรมสามารถทำได้โดยใช้รูปแบบต่างๆ รวมถึงไบนารี XML หรือ JSON .NET Framework มีคลาสที่แตกต่างกันสำหรับแต่ละรูปแบบเหล่านี้
2.1 การทำให้เป็นอนุกรมไบนารี (Binary Serialization)
การทำให้เป็นอนุกรมแบบไบนารีจะรักษาวัตถุและแอตทริบิวต์ในรูปแบบไบนารีแบบกะทัดรัด นี่คือตัวอย่างวิธีการทำซีเรียลไลซ์แบบไบนารี:
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
Person person = new Person { Name = "John Doe", Age = 30 };
BinaryFormatter formatter = new BinaryFormatter();
using (Stream stream = new FileStream("Person.bin", FileMode.Create, FileAccess.Write))
{
formatter.Serialize(stream, person);
}
ในโค้ดนี้Person
คลาสจะถูกทำเครื่องหมายด้วย[Serializable]
แอตทริบิวต์เพื่อระบุว่าสามารถต่ออนุกรมได้ วัตถุPerson
จะถูกสร้างขึ้นและซีเรียลไลซ์โดยใช้ไฟล์BinaryFormatter
. วัตถุที่ต่อเนื่องถูกเขียนไปยังไฟล์ “Person.bin”
การดีซีเรียลไลเซชันจะเป็นดังนี้:
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
BinaryFormatter formatter = new BinaryFormatter();
using (Stream stream = new FileStream("Person.bin", FileMode.Open, FileAccess.Read))
{
Person person = (Person)formatter.Deserialize(stream);
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
ที่นี่BinaryFormatter
ใช้อีกครั้ง คราวนี้เพื่อยกเลิกการซีเรียลไลซ์ข้อมูลจากไฟล์ “Person.bin” กลับเข้าไปในPerson
วัตถุ
2.2 การทำให้เป็นอนุกรม JSON
ในการทำแอพสมัยใหม่ JSON ได้กลายเป็นหนึ่งในรูปแบบข้อมูลที่ใช้กันอย่างแพร่หลาย อ่านง่าย น้ำหนักเบา และใช้งานง่าย เนSystem.Text.Json
มสเปซมีฟังก์ชันสำหรับการซีเรียลไลซ์และดีซีเรียลไลซ์จาก JSON
using System;
using System.Text.Json;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
Person person = new Person { Name = "John Doe", Age = 30 };
string jsonString = JsonSerializer.Serialize(person);
Console.WriteLine(jsonString);
ในตัวอย่างนี้Person
อ็อบเจ็กต์ถูกทำให้เป็นอนุกรมกับสตริง JSON โดยใช้JsonSerializer.Serialize
เมธอด JSON ผลลัพธ์จะถูกพิมพ์ไปยังคอนโซล
หากต้องการ deserialize JSON กลับเป็นPerson
วัตถุ คุณจะใช้JsonSerializer.Deserialize
วิธีการ:
using System;
using System.Text.Json;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
string jsonString = "{\"Name\":\"John Doe\",\"Age\":30}";
Person person = JsonSerializer.Deserialize<Person>(jsonString);
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
การทำความเข้าใจไฟล์ I/O และการทำให้เป็นซีเรียลไลเซชันใน C# เป็นทักษะที่สำคัญสำหรับการทำแอพ ความสามารถเหล่านี้ทำให้คุณสามารถบันทึกและโหลดข้อมูล ไม่ว่าจะเป็นข้อความธรรมดา วัตถุที่ซับซ้อน หรือในรูปแบบยอดนิยมอย่าง JSON ความเข้าใจนี้เป็นรากฐานที่สำคัญของการจัดการข้อมูลอย่างมีประสิทธิภาพและประสิทธิผลในแอปพลิเคชันของคุณ
ในฐานะนักพัฒนาแอปพลิเคชัน จำเป็นอย่างยิ่งที่จะต้องมีทักษะเหล่านี้ในกล่องเครื่องมือของคุณ เปิดโอกาสใหม่ๆ สำหรับแอปพลิเคชันของคุณ เช่น การคงข้อมูลผู้ใช้ในเซสชันต่างๆ การแชร์ข้อมูลระหว่างระบบต่างๆ หรือแม้กระทั่งการจัดเก็บข้อมูลสำหรับการใช้งานแบบออฟไลน์ ทำให้มั่นใจได้ว่าคุณสามารถทำแอพที่แข็งแกร่ง ยืดหยุ่น และมีประสิทธิภาพสูงได้