Đọc tập tin văn bản trong csharp

c-sharp

(Phạm Quyết Nghị) #1

Đọc dữ liệu từ tập tin văn bản cũng tương tự như việc viết thông tin vào nó. Ví dụ minh họa tiếp sau đây thực hiện việc đọc tập tin mà chúng ta đã tạo ra từ chương trình minh họa 12.7 trước. Đây là chương trình đọc tập tin văn bản.

Ví dụ 12.8: Đọc một tập tin văn bản.

using System;
using System.IO;
namespace Programming_CSharp
{
	public class Tester
	{
		public static void Main(string[] args)
		{
			if ( args.Length < 1)
			{
				Console.WriteLine(“Phai nhap ten tap tin”);
			}
			else
			{
				string buffer;
				StreamReader myFile = File.OpenText( args[0]);
				while ( (buffer = myFile.ReadLine()) !=null)
				{
					Console.WriteLine(buffer);
				}
				
				myFile.Close();
			}
		}
	}
}

Nếu chúng ta nhập đúng tên của tập tin vừa tạo trong ví dụ trước thì kết quả chương trình thực hiện như sau:

Kết quả:

Khong co viec gi kho
Chi so long khong ben
Dao nui va lap bien
Quyet chi at lam nen
0 1 2 3 4 5 6 7 8 9

Nếu chương trình được cung cấp đầy đủ tên tập tin thì nó sẽ bắt đầu thực hiện việc đọc thông tin. Đầu tiên là khai báo một chuỗi dùng làm chỗ lưu thông tin đọc tử tập tin ra. Để mở tập tin văn bản thì phương thức OpenText được gọi. Phương thức này được truyền vào tên của tập tin văn bản cần mở. Một lần nữa một luồng tên myFile được tạo ra gắn với tập tin đã cho, luồng này có kiểu là StreamReader. Phương thức ReadLine() của myFile thực hiện việc đọc từng dòng trong tập tin và sau đó được xuất ra màn hình console. Việc đọc này kết hợp với việc kiểm tra là đã đọc đến cuối tập tin chưa, nếu đọc đến cuối tập tin, tức là hàm ReadLine() trả về chuỗi rỗng, lúc này chương trình sẽ kết thúc việc đọc. Cuối cùng hàm Close được gọi để đóng tập tin lại, và chương trình chấm dứt.

Trong chương trình này cũng không xử lý ngoại lệ, nếu tập tin không tồn tại chương trình sẽ phát sinh ra ngoại lệ và ngoại lệ này không được xử lý. Đề nghị người đọc nên đưa vào các đoạn xử lý ngoại lệ tương tự như ví dụ 12.6


89% Thành viên có cách giải cho một câu hỏi. Bạn thì sao?