วิธีการอ่านแฟ้มข้อความ โดยใช้ System.IO และ Visual C#

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 306777 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
สำหรับรุ่น Microsoft Visual Basic .NET ของบทความนี้ ให้ดู 302309.

บทความนี้อ้างอิงไปไลบรารีคลาสของกรอบงาน Microsoft .NET namespaces ต่อไปนี้:
  • System.IO
  • System.Collections
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความที่มีการทีละขั้นตอนนี้แสดงวิธีการค้นคืนข้อมูลจากแฟ้มข้อความ (.txt), และจากนั้น ใช้คลาสที่ArrayListเมื่อต้องแสดงข้อมูลดังกล่าวไปยังผู้ใช้

ความต้องการ

Microsoft ที่ Visual C#

การอ่านแฟ้มข้อความใน Visual C#

การเปิด และอ่านแฟ้มสำหรับการเข้าถึงแบบอ่านเป็นส่วนสำคัญของฟังก์ชัน (IO) การรับเข้า/ส่งออก แม้ว่าคุณไม่จำเป็นต้องเขียนไปยังแฟ้มที่สงสัย ตัวอย่างนี้เปิดแฟ้มสำหรับการอ่าน ซึ่งเป็นประโยชน์สำหรับการอ่านแฟ้มข้อความ แต่ไม่เหมาะสมสำหรับแฟ้มไบนารี ตัวอย่างนี้ใช้ค่าใดค่าหนึ่งในวิธีมากมายที่พร้อมใช้งานสำหรับการเปิดแฟ้มดังกล่าว

ถึงแม้ว่าโครงสร้างข้อมูลจำนวนมากจะพร้อมใช้งานเพื่อเก็บข้อมูลที่ดึงมาจากไฟล์ คลาสที่ArrayListเป็นโครงสร้างที่ง่ายที่สุดที่จะใช้ เมื่อต้องเปิด และอ่านจากแฟ้ม ตัวอย่างนี้ใช้วัตถุจาก namespace System.IOคลาSystem.IO.StreamReaderโดยเฉพาะ

หมายเหตุ ตัวอย่างนี้จำเป็นต้องใช้บางรูปแบบแฟ้มข้อความ (.txt) ที่จะอ่าน

โหลด และอ่านผ่านแฟ้มข้อความจาก Visual C# ให้ทำตามขั้นตอนเหล่านี้:
  1. เริ่ม Microsoft Visual Studio
  2. สร้างโปรแกรมประยุกต์คอนโซลใหม่ใน Visual C# Visual Studio สร้างคลาสแบบสแตติกสำหรับคุณ พร้อมกับแนบขั้นตอนการMain()ว่าง
  3. ตรวจสอบว่า โครงการอ้างน้อย namespaceระบบหรือไม่ ใช้คำสั่งที่ใช้ใน namespacesระบบSystem.IOและSystem.Collectionsเพื่อให้คุณไม่จำเป็นต้องมีสิทธิได้รับการประกาศจาก namespaces เหล่านี้ในภายหลังในรหัสของคุณ คุณต้องใช้คำสั่งเหล่านี้ก่อนที่จะประกาศอื่น ๆ
    using System;
    using System.IO;
    using System.Collections;
    					
  4. เมื่อต้องเปิดแฟ้มสำหรับการอ่าน สร้างอินสแตนซ์ใหม่ของวัตถุStreamReaderและส่งผ่านเส้นทางของแฟ้มลงในตัวสร้างเป็นดังนี้:
    StreamReader objReader = new StreamReader("c:\\test.txt");
    					
  5. คุณต้องมีตัวแปรสายอักขระที่จะเก็บแต่ละบรรทัดของแฟ้ม ตามที่คุณทำการประมวลผล เนื่องจากคุณจะสามารถเพิ่มบรรทัดเหล่านี้ไปยังArrayListประกาศ และสร้างวัตถุชนิดนั้น นอกจากนี้
    string sLine="";
    ArrayList arrText = new ArrayList();
    					
  6. มีหลายวิธีในการอ่านแฟ้มใน รวมทั้งเมธอดReadToEndที่อ่านในแฟ้มทั้งหมดในคราวเดียวกัน อย่างไรก็ตาม สำหรับตัวอย่างนี้ คุณสามารถใช้วิธีการReadLineเพื่อนำมาในบรรทัดหนึ่งแฟ้มในแต่ละครั้ง เมื่อถึงจุดสิ้นสุดของแฟ้ม วิธีการนี้ส่งกลับค่า null ซึ่งช่วยให้คุณสามารถสิ้นสุดการวนรอบของคุณ ในขณะที่คุณอ่านแต่ละบรรทัดจากแฟ้ม คุณสามารถใช้วิธีการเพิ่มของการArrayListเมื่อต้องแทรกบรรทัดลงในคลาสArrayListของคุณ
    while (sLine != null)
    {
    	sLine = objReader.ReadLine();
    	if (sLine != null)
    		arrText.Add(sLine);
    }
    objReader.Close();
    					
  7. ใช้วนสำหรับแต่ละเขียนเนื้อหาของเว็บไซต์ของคุณArrayListเติมสีใหม่ไปยังคอนโซลดังนี้:
    foreach (string sOutput in arrText)
    	Console.WriteLine(sOutput);
    Console.ReadLine();
    					
  8. บันทึก และเรียกใช้รหัสของคุณ ซึ่งก่อให้เกิดรายการของแฟ้มของคุณไปยังคอนโซล

รายการของรหัสการทำให้เสร็จสมบูรณ์

using System;
using System.IO;
using System.Collections;

namespace TextFileReader_csharp
{
	/// <summary>
	/// Summary description for Class1.
	/// </summary>
	class Class1
	{
		static void Main(string[] args)
		{
			StreamReader objReader = new StreamReader("c:\\test.txt");
			string sLine="";
			ArrayList arrText = new ArrayList();

			while (sLine != null)
			{
				sLine = objReader.ReadLine();
				if (sLine != null)
					arrText.Add(sLine);
			}
                        objReader.Close();

			foreach (string sOutput in arrText)
				Console.WriteLine(sOutput);
			Console.ReadLine();
		}
	}
}
				

การแก้ไขปัญหา

มีหลายสิ่งที่ต้องระวังเมื่อคุณทำงานกับแฟ้ม I/O รวมถึงรายการต่อไปนี้:
  • ทุกครั้งที่คุณเข้าถึงแฟ้ม ไม่มีความเป็นไปได้ว่า อาจไม่มีในระบบแฟ้มที่คุณกำลังพยายามอ่าน หรือเขียน หรืออาจใช้
  • ตัวอย่างนี้อ่านแฟ้มทั้งหมดลงในหน่วยความจำก่อนประมวลผลแฟ้ม คุณอาจพบสถานการณ์ที่แฟ้มที่มีขนาดใหญ่เกินกว่าที่จะถูกเก็บในหน่วยความจำ หรือคุณอาจไม่มีสิทธิ์ในการเข้าถึงแฟ้ม
ใดในสถานการณ์เหล่านี้ทำให้เกิดข้อยกเว้นเพื่อที่สามารถยก เสมอเป็นวิธีที่ดีที่สุดเพื่อให้บล็อกลอง... catchเพื่อจัดการกับปัญหาเหล่านี้ทั่วไป

คุณสมบัติ

หมายเลขบทความ (Article ID): 306777 - รีวิวครั้งสุดท้าย: 5 พฤศจิกายน 2555 - Revision: 6.0
ใช้กับ
  • Microsoft Visual C# 2005
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# 2008 Express Edition
Keywords: 
kbcollections kbhowtomaster kbio kbmt KB306777 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:306777

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com