การจัดการไฟล์ใน C#: I/O Operaต่างๆ [ตัวอย่าง]

⚡ สรุปอย่างชาญฉลาด

การดำเนินการกับไฟล์ใน C# ช่วยให้คุณสามารถอ่าน เขียน คัดลอก และลบไฟล์ได้โดยใช้เนมสเปซ System.IO ในที่นี้คุณจะได้เรียนรู้วิธีการใช้ File.Exists, File.ReadAllLines, File.ReadAllText, File.Copy และ File.Delete พร้อมตัวอย่างโค้ดที่ชัดเจน

  • 📂 มันคืออะไร: การดำเนินการไฟล์ใน C# ประกอบด้วยการอ่าน เขียน คัดลอก และลบไฟล์ผ่านเนมสเปซ System.IO
  • ไฟล์มีอยู่: File.Exists(path) ตรวจสอบว่าไฟล์นั้นมีอยู่หรือไม่ก่อนที่คุณจะอ่านหรือลบไฟล์นั้น
  • ???? เร้ดดิ้ง: เมธอด File.ReadAllLines จะคืนค่าเป็นอาร์เรย์สตริง ในขณะที่ File.ReadAllText จะคืนค่าไฟล์ทั้งหมดเป็นสตริงเดียว
  • 📋 คัดลอกและลบ: คำสั่ง File.Copy จะคัดลอกไฟล์ไปยังพาธใหม่ และคำสั่ง File.Delete จะลบไฟล์นั้น
  • 🤖 ความช่วยเหลือจาก AI: เครื่องมือ AI เช่น GitHub Copilot สร้างโค้ด C# สำหรับจัดการไฟล์ได้ทันที

ไฟล์ C# Operations

C# มีการดำเนินการเกี่ยวกับไฟล์มากมาย การดำเนินการเหล่านี้รวมถึงการเปิดไฟล์ การอ่านหรือการเขียนลงในไฟล์ อาจมีบางกรณีที่คุณต้องการทำงานกับไฟล์โดยตรง ซึ่งในกรณีนั้น คุณจะต้องใช้การดำเนินการเกี่ยวกับไฟล์ที่มีอยู่ใน C# การดำเนินการเกี่ยวกับไฟล์พื้นฐานบางส่วนจะกล่าวถึงด้านล่าง

  1. การอ่าน – การดำเนินการนี้เป็นการดำเนินการอ่านพื้นฐานโดยข้อมูลจะถูกอ่านจากไฟล์
  2. การเขียน – การดำเนินการนี้เป็นการดำเนินการเขียนพื้นฐานซึ่งข้อมูลจะถูกเขียนลงในไฟล์ โดยค่าเริ่มต้น เนื้อหาที่มีอยู่ทั้งหมดจะถูกลบออกจากไฟล์ และเนื้อหาใหม่จะถูกเขียน
  3. การผนวก – การดำเนินการนี้ยังเกี่ยวข้องกับการเขียนข้อมูลลงในไฟล์ ความแตกต่างเพียงอย่างเดียวคือข้อมูลที่มีอยู่ในไฟล์จะไม่ถูกเขียนทับ ข้อมูลใหม่ที่จะเขียนจะถูกเพิ่มที่ตอนท้ายของไฟล์

คำสั่ง I/O พื้นฐาน

C# และ .Net สามารถทำงานกับไฟล์ต่างๆ ได้โดยใช้คำสั่ง File I/O หลายคำสั่ง มาดูคำสั่งเหล่านี้กัน สำหรับตัวอย่างของเรา เราจะถือว่าเรามีไฟล์ในไดรฟ์ D ชื่อ Example.txt
ไฟล์จะเป็นไฟล์ข้อความธรรมดาและมี 2 บรรทัดดังรูปด้านล่าง

  • Guru99 – .Net
  • Guru99 -C#

สำหรับตัวอย่างของเรา เราจะสร้างแอปพลิเคชันคอนโซลแบบธรรมดาและทำงานกับคำสั่ง File I/O ของเรา แอปพลิเคชันคอนโซลเป็นแอปพลิเคชันพื้นฐานที่สร้างขึ้นในบทช่วยสอนก่อนหน้านี้ ในแอปพลิเคชันคอนโซล โค้ดทั้งหมดจะถูกเขียนลงในไฟล์ program.cs

แฟ้มที่มีอยู่

วิธีการ Fileมีอยู่ ใช้เพื่อตรวจสอบว่ามีไฟล์ใดอยู่หรือไม่ ตอนนี้เรามาดูโค้ดที่สามารถใช้เพื่อตรวจสอบว่าไฟล์ Example.txt ของเรามีอยู่หรือไม่ กรอกโค้ดด้านล่างลงในไฟล์ program.cs

แฟ้มที่มีอยู่

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Tutorial
 {
  static void Main(string[] args)
  {
   String path = @"D:\Example.txt";
   
   if (File.Exists(path))
   {
    Console.WriteLine("File Exists");
   }
   Console.ReadKey();
  }
 }
}

Code คำอธิบาย:-

  1. ขั้นแรก เรากำลังตั้งค่าตัวแปรสตริงด้วยเส้นทางไปยังไฟล์ Example.txt ของเรา
  2. ต่อไปเราใช้เมธอด File.Exists เพื่อตรวจสอบว่าไฟล์นั้นมีอยู่หรือไม่ หากมีไฟล์อยู่ ค่าจริงจะถูกส่งกลับ
  3. หากเราได้รับค่าจริงและมีไฟล์อยู่ เราจะเขียนข้อความ "File Exists" ลงในคอนโซล

เมื่อตั้งค่าโค้ดข้างต้นแล้ว และดำเนินการโครงการโดยใช้ Visual Studio คุณจะได้ผลลัพธ์ด้านล่างนี้

ผลลัพธ์:-

แฟ้มที่มีอยู่

จากผลลัพธ์ข้างต้น คุณจะเห็นว่าคำสั่ง File.Exists ได้รับการดำเนินการสำเร็จ และข้อความที่ถูกต้องจะแสดงในหน้าต่างคอนโซล

ไฟล์.ReadAlllines

วิธีการนี้ใช้เพื่ออ่านบรรทัดทั้งหมดทีละบรรทัดในไฟล์ เส้นจะถูกเก็บไว้ในตัวแปรอาร์เรย์สตริง ลองดูตัวอย่าง กรอกโค้ดด้านล่างลงในไฟล์ program.cs

ไฟล์.ReadAlllines

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Tutorial
 {
  static void Main(string[] args)
  {
   String path = @"D:\Example.txt";

   String[] lines;
   lines = File.ReadAllLines(path);

   Console.WriteLine(lines[0]);
   Console.WriteLine(lines[1]);

   Console.ReadKey();
  }
 }
}

Code คำอธิบาย:-

  1. ขั้นแรก เรากำลังประกาศตัวแปรอาร์เรย์สตริง สิ่งนี้จะถูกใช้เพื่อจัดเก็บผลลัพธ์ซึ่งจะถูกส่งกลับโดยเมธอด File.ReadAllLines
  2. ต่อไป เราใช้เมธอด File.ReadAllLines เพื่ออ่านบรรทัดทั้งหมดจากไฟล์ข้อความของเรา ผลลัพธ์จะถูกส่งไปยังตัวแปรเส้น
  3. เนื่องจากเรารู้ว่าไฟล์ของเรามีเพียง 2 บรรทัด เราจึงสามารถเข้าถึงค่าของตัวแปรอาร์เรย์ได้โดยใช้คำสั่ง lines[0] และ lines[1]

เมื่อตั้งค่าโค้ดข้างต้นแล้ว และโปรเจ็กต์ถูกรันโดยใช้ Visual Studioคุณจะได้ผลลัพธ์ด้านล่าง

ผลลัพธ์:-

ไฟล์.ReadAlllines

จากผลลัพธ์ คุณจะเห็นว่าคำสั่ง File.ReadAllLines ส่งคืนทั้งสองบรรทัดจากไฟล์ Example.txt ของเรา

ไฟล์ ReadAllText

วิธีนี้ใช้เพื่ออ่านบรรทัดทั้งหมดในไฟล์พร้อมกัน เส้นต่างๆ จะถูกเก็บไว้ในตัวแปรสตริง ลองดูตัวอย่าง กรอกโค้ดด้านล่างลงในไฟล์ program.cs

ไฟล์ ReadAllText

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
    String path = @"D:\Example.txt";

    String lines;
    lines = File.ReadAllText(path);
    Console.WriteLine(lines);
 
    Console.ReadKey();
   }
  }
}

Code คำอธิบาย:-

  1. ขั้นแรก เรากำลังประกาศตัวแปรสตริงที่เรียกว่า Lines สิ่งนี้จะถูกใช้เพื่อจัดเก็บผลลัพธ์ซึ่งจะถูกส่งกลับโดยเมธอด File.ReadAllText
  2. ต่อไป เราใช้เมธอด File.ReadAllText เพื่ออ่านบรรทัดทั้งหมดจากไฟล์ข้อความของเรา ผลลัพธ์จะถูกส่งไปยังตัวแปรเส้น
  3. เราสามารถใช้เมธอด Console.Writeline ได้โดยตรงเพื่อแสดงค่าของตัวแปร Lines

เมื่อตั้งค่าโค้ดข้างต้นแล้ว และรันโปรเจ็กต์โดยใช้ Visual Studio คุณจะได้ผลลัพธ์ด้านล่างนี้

ผลลัพธ์:-

ไฟล์ ReadAllText

จากเอาต์พุต คุณจะเห็นว่าคำสั่ง File.ReadAlltext ส่งคืนทั้งสองบรรทัดจากไฟล์ Example.txt ของเรา

ไฟล์.คัดลอก

วิธีการนี้ใช้ในการทำสำเนาไฟล์ที่มีอยู่ ลองดูตัวอย่าง กรอกโค้ดด้านล่างลงในไฟล์ program.cs

ไฟล์.คัดลอก

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
   String path = @"D:\Example.txt";

   String copypath = @"D:\ExampleNew.txt";

   File.Copy(path,copypath);

   Console.ReadKey();
   }
  }
}

Code คำอธิบาย:-

  1. ขั้นแรก เราจะประกาศตัวแปรสตริงชื่อ path ซึ่งจะเป็นตำแหน่งของไฟล์ Example.txt ไฟล์นี้จะเป็นไฟล์ต้นฉบับที่ใช้สำหรับการคัดลอก
  2. ต่อไป เราจะประกาศตัวแปรสตริงที่เรียกว่า copypath นี่จะเป็นตำแหน่งของไฟล์ใหม่ที่เรียกว่าไฟล์ ExampleNew.txt นี่จะเป็นไฟล์ปลายทางที่เนื้อหาจะถูกเขียนจากไฟล์ต้นฉบับ Example.txt
  3. จากนั้นเราจะเรียกเมธอด File.Copy เพื่อคัดลอกไฟล์ Example.txt ไปยังไฟล์ ExampleNew.txt

เมื่อตั้งค่าโค้ดข้างต้นแล้ว และรันโครงการโดยใช้ Visual Studio ไฟล์ Example.txt จะถูกคัดลอกไปยัง ExampleNew.txt

ไฟล์ลบ

วิธีการนี้ใช้ในการลบไฟล์ที่มีอยู่ ลองดูตัวอย่าง กรอกโค้ดด้านล่างลงในไฟล์ program.cs

ไฟล์ลบ

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
   String path = @"D:\Example.txt";

   File.Delete(path);

   Console.ReadKey();
   }
  }
}

Code คำอธิบาย:-

  1. ขั้นแรก เรากำลังประกาศตัวแปรสตริงที่เรียกว่าพาธ นี่จะเป็นตำแหน่งของไฟล์ Example.txt ของเรา นี่คือไฟล์ที่จะถูกลบ
  2. ต่อไปเราจะเรียกเมธอด File.Delete เพื่อลบไฟล์

เมื่อตั้งค่าโค้ดข้างต้นแล้ว และรันโครงการโดยใช้ Visual Studio ไฟล์ Example.txt จะถูกลบออกจากไดรฟ์ D

เอกสารอ้างอิงเมธอดไฟล์ C#

ตารางด้านล่างนี้สรุปเมธอดหลักของไฟล์ในภาษา C# และหน้าที่ของแต่ละเมธอด

วิธีการไฟล์ Descriptไอออน
แฟ้มที่มีอยู่ File มีอยู่เมธอดที่ใช้ในการตรวจสอบว่ามีไฟล์ใดอยู่หรือไม่
ไฟล์.ReadAlllines วิธีการนี้ใช้เพื่ออ่านบรรทัดทั้งหมดทีละบรรทัดในไฟล์
ไฟล์ ReadAllText วิธีนี้ใช้เพื่ออ่านบรรทัดทั้งหมดในไฟล์พร้อมกัน
ไฟล์.คัดลอก วิธีการนี้ใช้ในการทำสำเนาไฟล์ที่มีอยู่
ไฟล์ลบ วิธีการนี้ใช้ในการลบไฟล์ที่มีอยู่

คำถามที่พบบ่อย

การดำเนินการกับไฟล์ใน C# ช่วยให้คุณสามารถอ่าน เขียน คัดลอก เพิ่มข้อมูลต่อท้าย และลบไฟล์ได้ เมธอดส่วนใหญ่เป็นของคลาส System.IO.File เช่น File.Exists, File.ReadAllText, File.Copy และ File.Delete

ใช้เมธอด File.Exists(path) ซึ่งจะคืนค่า true เมื่อไฟล์มีอยู่ และ false หากไม่มี ตรวจสอบก่อนอ่านหรือลบไฟล์เพื่อหลีกเลี่ยงข้อผิดพลาดขณะรันไทม์

เมธอด File.ReadAllLines จะส่งคืนแต่ละบรรทัดเป็นองค์ประกอบของอาร์เรย์สตริง ในขณะที่ File.ReadAllText จะส่งคืนเนื้อหาไฟล์ทั้งหมดเป็นสตริงเดียว

เรียกใช้เมธอด File.Copy(sourcePath, destinationPath) เพื่อสร้างไฟล์ใหม่ที่ปลายทางซึ่งมีเนื้อหาเหมือนกับไฟล์ต้นฉบับ

เรียกใช้ File.Delete(path) คำสั่งนี้จะลบไฟล์อย่างถาวร ดังนั้นควรตรวจสอบว่าไฟล์มีอยู่จริงหรือไม่โดยใช้ File.Exists ก่อนเพื่อหลีกเลี่ยงข้อผิดพลาด FileNotFoundException

ผู้ช่วย AI เช่น GitHub Copilot จะเติมข้อความอัตโนมัติสำหรับการเรียกใช้ File.ReadAllText, File.Copy และ File.Delete และสร้างโค้ด try-catch สำหรับการจัดการไฟล์จากคำอธิบายสั้นๆ ที่อธิบายถึงงานนั้น

ใช่แล้ว เครื่องมือที่ขับเคลื่อนด้วย AI จะสร้างเมธอดสำหรับอ่านและเขียนข้อมูล แนะนำเมธอด StreamReader หรือ File และเพิ่มการจัดการข้อผิดพลาดเพื่อให้โค้ดของคุณปลอดภัยยิ่งขึ้น

เพิ่ม `using System.IO;` ไว้ด้านบนสุดของโปรแกรมของคุณ เนมสเปซ System.IO ประกอบด้วยคลาส `File`, `StreamReader` และ `Stream`Writer คลาสที่ใช้สำหรับการจัดการไฟล์

สรุปโพสต์นี้ด้วย: