สร้างไฟล์ใน CSharp

สร้างไฟล์ใน CSharp

สร้างไฟล์ด้วย ตัวแปร 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 ให้ถูกต้องเสมอ เพื่อป้องกันไฟล์เสียหายหรือข้อมูลสูญหาย โดยวิธีที่ดีที่สุดคือการใช้ using statement ซึ่งจะช่วยจัดการปิดไฟล์ให้โดยอัตโนมัติ
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}");
}

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *