สตรีมในบทช่วยสอน C#: StreamReader & StreamWriter [ตัวอย่าง]

สตรีม C # คืออะไร

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

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

เหตุผลในการแบ่งมันออกเป็นชิ้นเล็กๆ ก็เนื่องมาจากผลกระทบของการอ่านไฟล์ขนาดใหญ่ในช็อตเดียว หากคุณต้องอ่านข้อมูลจากไฟล์ขนาด 100 MB ในคราวเดียว แอปพลิเคชันของคุณอาจหยุดทำงานและไม่เสถียร แนวทางที่ดีที่สุดคือการใช้สตรีมเพื่อแบ่งไฟล์ออกเป็นส่วนๆ ที่สามารถจัดการได้

ดังนั้นเมื่อดำเนินการเขียนข้อมูลในไฟล์ ข้อมูลที่ต้องการเขียนจะถูกเขียนลงในสตรีมก่อน จากนั้นจึงเขียนข้อมูลจากสตรีมลงในไฟล์ การดำเนินการอ่านก็เช่นเดียวกัน ในการดำเนินการอ่าน ข้อมูลจะถูกโอนจากไฟล์ไปยังสตรีมก่อน จากนั้นจึงอ่านข้อมูลจากแอปพลิเคชันผ่านสตรีม มาดูตัวอย่างการอ่านและเขียนโดยใช้สตรีมกัน

สตรีมรีดเดอร์

โปรแกรมอ่านสตรีมใช้เพื่ออ่านข้อมูลจากไฟล์โดยใช้สตรีม ข้อมูลจากไฟล์จะถูกอ่านลงในสตรีมก่อน หลังจากนั้นแอปพลิเคชันจะอ่านข้อมูลจากสตรีม

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

  • Guru99 – .เน็ต
  • กูรู99 -C#

สำหรับตัวอย่างของเรา เราจะสร้างแอปพลิเคชันคอนโซลแบบธรรมดาและทำงานกับสตรีมไฟล์

ลองดูตัวอย่างว่าเราสามารถใช้สตรีมเพื่ออ่านข้อมูลจากไฟล์ได้อย่างไร กรอกโค้ดด้านล่างลงในไฟล์ 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";

    using (StreamReader sr = File.OpenText(path))
    {
     String s = "";

     while ((s = sr.ReadLine()) != null)
     {
      Console.WriteLine(s);
     }
    }
   Console.ReadKey();
  }
 }
}

คำอธิบายรหัส:-

  1. ขั้นแรก เรากำลังประกาศวัตถุตัวอ่านสตรีม วัตถุตัวอ่านสตรีมถูกใช้ใน C# เพื่อกำหนดการสตรีมจากไฟล์ไปยังแอปพลิเคชัน ข้อมูลจะถูกพุชจากไฟล์ไปยังสตรีมทุกครั้งที่อ่านข้อมูลจากไฟล์ ไฟล์.OpenText ใช้เพื่อเปิดไฟล์ “Example.txt” ในโหมดอ่านอย่างเดียว ตัวจัดการไฟล์จะถูกส่งไปยังวัตถุตัวอ่านสตรีม
  2. ต่อไป เราจะกำหนดตัวแปรชั่วคราว 's' ซึ่งจะใช้ในการอ่านข้อมูลทั้งหมดจากไฟล์
  3. จากนั้นเราใช้เมธอด ReadLine ของโปรแกรมอ่านสตรีมเพื่ออ่านแต่ละบรรทัดจากบัฟเฟอร์สตรีม เมื่อเราดำเนินการนี้ การดำเนินการแต่ละบรรทัดจะถูกโอนจากไฟล์ไปยังบัฟเฟอร์ก่อน จากนั้นบรรทัดสตริงจะถูกโอนจากบัฟเฟอร์ไปยังตัวแปร 's' จากนั้นเราจะเขียนเนื้อหาของสตริง 's' ลงในคอนโซล

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

ผลลัพธ์:-

สตรีมรีดเดอร์

จากผลลัพธ์ คุณจะเห็นว่า Stream Reader อ่านทั้งสองบรรทัดจากไฟล์ ในที่สุด บรรทัดของสตริงที่อ่านจากสตรีมจะถูกส่งไปยังคอนโซล

นักเขียนสตรีม

ตัวเขียนสตรีมใช้เพื่อเขียนข้อมูลไปยังไฟล์โดยใช้สตรีม ข้อมูลจากแอปพลิเคชันจะถูกเขียนลงในสตรีมก่อน หลังจากนั้นสตรีมจะเขียนข้อมูลลงไฟล์ ลองดูตัวอย่างว่าเราสามารถใช้สตรีมในการเขียนข้อมูลจากไฟล์ได้อย่างไร กรอกโค้ดด้านล่างลงในไฟล์ 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";
    
    using (StreamWriter sr = File.AppendText(path))
    {
     sr.WriteLine("Guru99 - ASP.Net");
     sr.Close();

     Console.WriteLine(File.ReadAllText(path));
    }
    Console.ReadKey();
  }
 }
}

คำอธิบายรหัส:-

  1. อันดับแรก เรากำลังประกาศออบเจ็กต์ตัวเขียนสตรีม วัตถุตัวเขียนกระแสข้อมูลถูกใช้ใน C# เพื่อกำหนดกระแสข้อมูล จากนั้นสตรีมจะใช้เพื่อเขียนข้อมูลจากแอปพลิเคชันไปยังไฟล์ ข้อมูลจะถูกพุชจากแอปพลิเคชันไปยังสตรีมทุกครั้งที่จำเป็นต้องเขียนข้อมูล คำสั่ง File.AppendText ใช้เพื่อเปิดไฟล์ “Example.txt” ในโหมดผนวก ตัวจัดการไฟล์จะถูกส่งไปยังวัตถุตัวเขียนสตรีม
  2. เรากำลังใช้วิธีการเขียนสตรีม Writeline เพื่อเขียนบรรทัด “Guru99 – ASP.Net” ไปยังสตรีม จากสตรีม บรรทัดจะถูกเขียนลงในไฟล์
  3. จากนั้นเราจะปิดตัวเขียนสตรีมหลังจากเขียนลงในไฟล์ โดยปกติแล้ว แนวทางปฏิบัติที่ดีในการปิดตัวจัดการไฟล์เมื่อไฟล์นั้นไม่จำเป็นสำหรับการเขียนอีกต่อไป
  4. สุดท้ายนี้ เรากำลังอ่านเนื้อหาของไฟล์อีกครั้งและเขียนลงในบันทึกของคอนโซล นี่เป็นการตรวจสอบว่ามีการเขียนบรรทัดลงในไฟล์หรือไม่

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

ผลลัพธ์:-

นักเขียนสตรีม

จากผลลัพธ์ คุณจะเห็นว่าบรรทัด “Guru99 – ASP.Net” ถูกเพิ่มลงในไฟล์สำเร็จแล้ว สามารถดูข้อความทั้ง 3 บรรทัดได้ในคอนโซล

สรุป

  • สตรีมถูกใช้เป็นระดับกลางระหว่างแอปพลิเคชันและไฟล์
  • StreamReader จะใช้เมื่อใดก็ตามที่จำเป็นต้องอ่านข้อมูลจากไฟล์
  • Streamwriter จะใช้เมื่อใดก็ตามที่จำเป็นต้องเขียนข้อมูลลงในไฟล์