สตรีมในบทช่วยสอน 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(); } } }
คำอธิบายรหัส:-
- ขั้นแรก เรากำลังประกาศวัตถุตัวอ่านสตรีม วัตถุตัวอ่านสตรีมถูกใช้ใน C# เพื่อกำหนดการสตรีมจากไฟล์ไปยังแอปพลิเคชัน ข้อมูลจะถูกพุชจากไฟล์ไปยังสตรีมทุกครั้งที่อ่านข้อมูลจากไฟล์ ไฟล์.OpenText ใช้เพื่อเปิดไฟล์ “Example.txt” ในโหมดอ่านอย่างเดียว ตัวจัดการไฟล์จะถูกส่งไปยังวัตถุตัวอ่านสตรีม
- ต่อไป เราจะกำหนดตัวแปรชั่วคราว 's' ซึ่งจะใช้ในการอ่านข้อมูลทั้งหมดจากไฟล์
- จากนั้นเราใช้เมธอด 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(); } } }
คำอธิบายรหัส:-
- อันดับแรก เรากำลังประกาศออบเจ็กต์ตัวเขียนสตรีม วัตถุตัวเขียนกระแสข้อมูลถูกใช้ใน C# เพื่อกำหนดกระแสข้อมูล จากนั้นสตรีมจะใช้เพื่อเขียนข้อมูลจากแอปพลิเคชันไปยังไฟล์ ข้อมูลจะถูกพุชจากแอปพลิเคชันไปยังสตรีมทุกครั้งที่จำเป็นต้องเขียนข้อมูล คำสั่ง File.AppendText ใช้เพื่อเปิดไฟล์ “Example.txt” ในโหมดผนวก ตัวจัดการไฟล์จะถูกส่งไปยังวัตถุตัวเขียนสตรีม
- เรากำลังใช้วิธีการเขียนสตรีม Writeline เพื่อเขียนบรรทัด “Guru99 – ASP.Net” ไปยังสตรีม จากสตรีม บรรทัดจะถูกเขียนลงในไฟล์
- จากนั้นเราจะปิดตัวเขียนสตรีมหลังจากเขียนลงในไฟล์ โดยปกติแล้ว แนวทางปฏิบัติที่ดีในการปิดตัวจัดการไฟล์เมื่อไฟล์นั้นไม่จำเป็นสำหรับการเขียนอีกต่อไป
- สุดท้ายนี้ เรากำลังอ่านเนื้อหาของไฟล์อีกครั้งและเขียนลงในบันทึกของคอนโซล นี่เป็นการตรวจสอบว่ามีการเขียนบรรทัดลงในไฟล์หรือไม่
เมื่อตั้งค่าโค้ดข้างต้นแล้ว และรันโปรเจ็กต์โดยใช้ Visual Studio คุณจะได้ผลลัพธ์ด้านล่างนี้
ผลลัพธ์:-
จากผลลัพธ์ คุณจะเห็นว่าบรรทัด “Guru99 – ASP.Net” ถูกเพิ่มลงในไฟล์สำเร็จแล้ว สามารถดูข้อความทั้ง 3 บรรทัดได้ในคอนโซล
สรุป
- สตรีมถูกใช้เป็นระดับกลางระหว่างแอปพลิเคชันและไฟล์
- StreamReader จะใช้เมื่อใดก็ตามที่จำเป็นต้องอ่านข้อมูลจากไฟล์
- Streamwriter จะใช้เมื่อใดก็ตามที่จำเป็นต้องเขียนข้อมูลลงในไฟล์