สร้างไฟล์ด้วย ตัวแปร text string
1. วิธีที่ง่ายและเร็วที่สุด: File.WriteAllText และ File.WriteAllLines 📝
วิธีนี้เหมาะสำหรับการสร้างไฟล์ใหม่ หรือเขียนทับไฟล์เดิมด้วยข้อมูลที่ไม่ใหญ่มาก เพราะเป็นการเขียนข้อมูลทั้งหมดลงไฟล์ในครั้งเดียว ทำให้โค้ดสั้นและเข้าใจง่าย
File.WriteAllText: เขียนข้อความ (string) ทั้งหมดลงในไฟล์เดียวFile.WriteAllLines: เขียนข้อความจาก Array หรือ List (แต่ละ item คือ 1 บรรทัด) ลงในไฟล์
จุดเด่น:
- ใช้งานง่ายมาก บรรทัดเดียวจบ
- ไม่ต้องจัดการเรื่องการเปิด-ปิดไฟล์เอง (Stream)
File.WriteAllText(filePath, xsdContent, Encoding.UTF8);
string xsdFilePath = "schema.xsd"; CreateSampleXsd(xsdFilePath);
static void CreateSampleXsd(string filePath)
{
string xsdContent = @"<?xml version=""1.0"" encoding=""utf-8""?>
<xs:schema xmlns:xs=""http://www.w3.org/2001/XMLSchema"">
<xs:element name=""PeopleData"" type=""PeopleType""/>
</xs:schema>";
File.WriteAllText(filePath, xsdContent, Encoding.UTF8);
}
เนื่องจากเราระบุแค่ชื่อไฟล์ ไฟล์จะสร้างแล้ว save ใน application folder เอง

อีกวิธีคือ WriteAllLines
string[] lines = { "บรรทัดที่ 1", "บรรทัดที่ 2", "บรรทัดที่ 3" };
string filePath2 = @"D:\MyDocuments\MyLinesFile.txt";
File.WriteAllLines(filePath2, lines);
2. วิธีที่มีประสิทธิภาพสำหรับไฟล์ขนาดใหญ่: StreamWriter 🚀
เมื่อต้องทำงานกับไฟล์ขนาดใหญ่ หรือต้องการเขียนข้อมูลลงไฟล์ทีละส่วนๆ เพื่อไม่ให้ใช้หน่วยความจำเยอะเกินไป StreamWriter คือคำตอบที่ดีที่สุดครับ
จุดเด่น:
- ประสิทธิภาพสูง: เขียนข้อมูลลงไฟล์เป็น “สตรีม” (stream) โดยตรง ไม่ต้องเก็บข้อมูลทั้งหมดไว้ใน RAM
- ยืดหยุ่น: ควบคุมการเขียนได้ละเอียดกว่า เช่น การกำหนด Encoding, การ Flush Buffer
- เหมาะสำหรับการเขียน log file หรือไฟล์ข้อมูลขนาดใหญ่ (Big Data)
ข้อควรระวัง:
- ต้องจัดการเรื่องการปิดอ็อบเจกต์
StreamWriterให้ถูกต้องเสมอ เพื่อป้องกันไฟล์เสียหายหรือข้อมูลสูญหาย โดยวิธีที่ดีที่สุดคือการใช้usingstatement ซึ่งจะช่วยจัดการปิดไฟล์ให้โดยอัตโนมัติ
using System.IO;
string filePath = @"D:\MyDocuments\LargeLogFile.txt";
try
{
// การใช้ 'using' จะช่วยการันตีว่าไฟล์จะถูกปิดและเคลียร์ข้อมูล (dispose) เสมอ
// แม้ว่าจะเกิดข้อผิดพลาดขึ้นระหว่างทำงานก็ตาม
using (StreamWriter writer = new StreamWriter(filePath, append: true)) // append: true คือการเขียนต่อท้ายไฟล์เดิม
{
writer.WriteLine($"Log entry: {DateTime.Now}");
writer.WriteLine("ดำเนินการสำเร็จ");
for (int i = 0; i < 1000; i++)
{
writer.WriteLine($"ข้อมูลที่ {i}");
}
}
Console.WriteLine("เขียนไฟล์ด้วย StreamWriter สำเร็จ!");
}
catch (Exception ex)
{
Console.WriteLine($"เกิดข้อผิดพลาด: {ex.Message}");
}

