สตรีมใน C#: StreamReader และ StreamWriter [ตัวอย่าง]
⚡ สรุปอย่างชาญฉลาด
AC# Stream คือเลเยอร์ที่อยู่ระหว่างแอปพลิเคชันของคุณกับไฟล์ ซึ่งช่วยให้คุณสามารถอ่านหรือเขียนข้อมูลเป็นส่วนเล็กๆ ได้ ในที่นี้คุณจะได้เรียนรู้วิธีการใช้งาน StreamReader และ StreamWriter การทำงาน พร้อมตัวอย่าง และประเภทกระแสหลัก
สตรีม C # คืออะไร
ในการดำเนินการไฟล์ C# โดยปกติจะใช้สตรีมเพื่ออ่านและเขียนไฟล์ สตรีมคือเลเยอร์เพิ่มเติมที่สร้างขึ้นระหว่างแอปพลิเคชันและไฟล์ สตรีมใช้เพื่อให้แน่ใจว่าการอ่านและเขียนไฟล์จะราบรื่น
โดยปกติแล้วสตรีมจะใช้เมื่ออ่านข้อมูลจากไฟล์ขนาดใหญ่ โดยการใช้สตรีม ข้อมูลจากไฟล์ขนาดใหญ่จะแบ่งออกเป็นชิ้นเล็กๆ และส่งไปยังสตรีม ข้อมูลเหล่านี้สามารถอ่านได้จากแอปพลิเคชัน
เหตุผลในการแบ่งมันออกเป็นชิ้นเล็กๆ ก็เนื่องมาจากผลกระทบของการอ่านไฟล์ขนาดใหญ่ในช็อตเดียว หากคุณต้องอ่านข้อมูลจากไฟล์ขนาด 100 MB ในคราวเดียว แอปพลิเคชันของคุณอาจหยุดทำงานและไม่เสถียร แนวทางที่ดีที่สุดคือการใช้สตรีมเพื่อแบ่งไฟล์ออกเป็นส่วนๆ ที่สามารถจัดการได้
ดังนั้นเมื่อดำเนินการเขียนข้อมูลในไฟล์ ข้อมูลที่ต้องการเขียนจะถูกเขียนลงในสตรีมก่อน จากนั้นจึงเขียนข้อมูลจากสตรีมลงในไฟล์ การดำเนินการอ่านก็เช่นเดียวกัน ในการดำเนินการอ่าน ข้อมูลจะถูกโอนจากไฟล์ไปยังสตรีมก่อน จากนั้นจึงอ่านข้อมูลจากแอปพลิเคชันผ่านสตรีม มาดูตัวอย่างการอ่านและเขียนโดยใช้สตรีมกัน
ประเภทของสตรีมใน C#
คลาสสตรีมทั้งหมดใน C# สืบทอดมาจากคลาส abstract Stream ชั้นเรียนใน System.IO เนมสเปซ แต่ละประเภทกำหนดเป้าหมายไปยังแหล่งข้อมูลที่แตกต่างกัน แต่มีเมธอดการอ่านและการเขียนเหมือนกัน สตรีมที่ใช้กันทั่วไปมากที่สุดแสดงไว้ด้านล่าง
- ไฟล์สตรีม อ่านและเขียนไฟล์บนดิสก์ทีละไบต์หรือทีละบล็อก
- เมมโมรี่สตรีม จัดเก็บข้อมูลในหน่วยความจำแทนที่จะเป็นไฟล์ ซึ่งมีประโยชน์สำหรับบัฟเฟอร์ชั่วคราว
- BufferedStream ห่อหุ้มสตรีมอื่นเพื่อลดจำนวนการทำงานของดิสก์หรือเครือข่ายที่ช้า
- เน็ตเวิร์กสตรีม ส่งและรับข้อมูลผ่านซ็อกเก็ตเครือข่าย
สำหรับการทำงานกับข้อความ C# มีฟังก์ชันต่างๆ ให้ใช้งาน StreamReader และ StreamWriter คลาสตัวช่วย ซึ่งทำหน้าที่ห่อหุ้มสตรีม และจะกล่าวถึงในหัวข้อถัดไป
สตรีมรีดเดอร์
โปรแกรมอ่านสตรีมใช้เพื่ออ่านข้อมูลจากไฟล์โดยใช้สตรีม ข้อมูลจากไฟล์จะถูกอ่านลงในสตรีมก่อน หลังจากนั้นแอปพลิเคชันจะอ่านข้อมูลจากสตรีม
สำหรับตัวอย่างของเรา เราจะถือว่าเรามีไฟล์ในไดรฟ์ D ชื่อ Example.txt ไฟล์จะเป็นไฟล์ข้อความธรรมดาและมี 2 บรรทัดดังรูปด้านล่าง
- Guru99 – .Net
- Guru99 -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(); } } }
Code คำอธิบาย:-
- ขั้นแรก เรากำลังประกาศวัตถุตัวอ่านสตรีม วัตถุตัวอ่านสตรีมถูกใช้ใน C# เพื่อกำหนดการสตรีมจากไฟล์ไปยังแอปพลิเคชัน ข้อมูลจะถูกพุชจากไฟล์ไปยังสตรีมทุกครั้งที่อ่านข้อมูลจากไฟล์ ไฟล์.OpenText ใช้เพื่อเปิดไฟล์ “Example.txt” ในโหมดอ่านอย่างเดียว ตัวจัดการไฟล์จะถูกส่งไปยังวัตถุตัวอ่านสตรีม
- ต่อไป เราจะกำหนดตัวแปรชั่วคราว 's' ซึ่งจะใช้ในการอ่านข้อมูลทั้งหมดจากไฟล์
- จากนั้นเราใช้เมธอด ReadLine ของโปรแกรมอ่านสตรีมเพื่ออ่านแต่ละบรรทัดจากบัฟเฟอร์สตรีม เมื่อเราดำเนินการนี้ การดำเนินการแต่ละบรรทัดจะถูกโอนจากไฟล์ไปยังบัฟเฟอร์ก่อน จากนั้นบรรทัดสตริงจะถูกโอนจากบัฟเฟอร์ไปยังตัวแปร 's' จากนั้นเราจะเขียนเนื้อหาของสตริง 's' ลงในคอนโซล
เมื่อตั้งค่าโค้ดข้างต้นแล้ว และโปรเจ็กต์ถูกรันโดยใช้ Visual Studioคุณจะได้ผลลัพธ์ด้านล่าง
ผลลัพธ์:-
จากผลลัพธ์ คุณจะเห็นว่า Stream Reader อ่านทั้งสองบรรทัดจากไฟล์ ในที่สุด บรรทัดของสตริงที่อ่านจากสตรีมจะถูกส่งไปยังคอนโซล
กระแส Writer
ตัวเขียนสตรีมใช้เพื่อเขียนข้อมูลไปยังไฟล์โดยใช้สตรีม ข้อมูลจากแอปพลิเคชันจะถูกเขียนลงในสตรีมก่อน หลังจากนั้นสตรีมจะเขียนข้อมูลลงไฟล์ ลองดูตัวอย่างว่าเราสามารถใช้สตรีมในการเขียนข้อมูลจากไฟล์ได้อย่างไร กรอกโค้ดด้านล่างลงในไฟล์ 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(); } } }
Code คำอธิบาย:-
- อันดับแรก เรากำลังประกาศออบเจ็กต์ตัวเขียนสตรีม วัตถุตัวเขียนกระแสข้อมูลถูกใช้ใน C# เพื่อกำหนดกระแสข้อมูล จากนั้นสตรีมจะใช้เพื่อเขียนข้อมูลจากแอปพลิเคชันไปยังไฟล์ ข้อมูลจะถูกพุชจากแอปพลิเคชันไปยังสตรีมทุกครั้งที่จำเป็นต้องเขียนข้อมูล คำสั่ง File.AppendText ใช้เพื่อเปิดไฟล์ “Example.txt” ในโหมดผนวก ตัวจัดการไฟล์จะถูกส่งไปยังวัตถุตัวเขียนสตรีม
- เรากำลังใช้เมธอดการเขียนสตรีม Writeline เพื่อเขียนบรรทัด “Guru99 – ASP.Net” ลงในสตรีม จากนั้นบรรทัดนั้นจะถูกเขียนลงในไฟล์จากสตรีม
- จากนั้นเราจะปิดตัวเขียนสตรีมหลังจากเขียนลงในไฟล์ โดยปกติแล้ว แนวทางปฏิบัติที่ดีในการปิดตัวจัดการไฟล์เมื่อไฟล์นั้นไม่จำเป็นสำหรับการเขียนอีกต่อไป
- สุดท้ายนี้ เรากำลังอ่านเนื้อหาของไฟล์อีกครั้งและเขียนลงในบันทึกของคอนโซล นี่เป็นการตรวจสอบว่ามีการเขียนบรรทัดลงในไฟล์หรือไม่
เมื่อตั้งค่าโค้ดข้างต้นแล้ว และรันโปรเจ็กต์โดยใช้ Visual Studio คุณจะได้ผลลัพธ์ด้านล่างนี้
ผลลัพธ์:-
จากผลลัพธ์ คุณจะเห็นว่าบรรทัด “Guruข้อความ “99 – ASP.Net” ถูกเพิ่มลงในไฟล์เรียบร้อยแล้ว สามารถดูข้อความทั้ง 3 บรรทัดได้ในคอนโซล





