1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu Các lớp cơ sở phần 4 doc

9 319 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đọc và ghi tập tin văn bản và tập tin nhị phân trong C#
Thể loại Bài giảng
Định dạng
Số trang 9
Dung lượng 177,33 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Khi một luồng được thiết lập và chỉ đến một tập tin, chúng ta có thể viết vào trong luồng và nó sẽ được viết vào tập tin: myFile.WriteLine“Khong co viec gi kho”; Dòng lệnh trên viết một

Trang 1

Khi một luồng được thiết lập và chỉ đến một tập tin, chúng ta có thể viết vào trong luồng và

nó sẽ được viết vào tập tin:

myFile.WriteLine(“Khong co viec gi kho”);

Dòng lệnh trên viết một chuỗi vào trong tập tin, việc viết này giống như là viết ra màn hình console Nhưng ở đây là được viết ra thiết bị khác, tức là ra tập tin Sau khi thực hiện toàn bộ công việc, cần thiết phải đóng luồng lại bằng cách gọi phương thức Close

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

Đọ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

{

Trang 2

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

Trang 3

nên đưa vào các đoạn xử lý ngoại lệ tương tự như ví dụ 12.6

Viết thông tin nhị phân vào tập tin

Nếu chúng ta sử dụng một tập tin văn bản, thì khi chúng ta lưu dữ liệu kiểu số thì phải thực hiện việc chuyển đổi sang dạng chuỗi ký tự để lưu vào trong tập tin văn bản và khi lấy ra ta cũng lấy được giá trị chuỗi ký tự do đó ta phải chuyển sang dạng số Đôi khi chúng ta muốn có cách thức nào đó tốt hơn để lưu trực tiếp giá trị vào trong tập tin

và sau đó đọc trực tiếp giá trị ra từ tập tin Ví dụ khi viết một số lượng lớn các số integer vào trong tập tin như là những số nguyên, thì khi đó ta có thể đọc các giá trị này ra như là

số integer Trường hợp nếu chúng được viết vào tập tin với dạng văn bản, thì khi đọc ra

ta phải đọc ra văn bản và phải chuyển mỗi giá trị từ một chuỗi đến các số integer Tốt hơn việc phải thực hiện thêm các bước chuyển đổi, ta có thể gắn một kiểu luồng nhị

phân BinaryStream vào trong một tập tin, rồi sau đó đọc và ghi thông tin nhị phân từ

luồng này

Tiếp theo ta sẽ xem một ví dụ minh họa việc đọc viết dữ liệu nhị phân vào một tập tin Mặc

dù trong chương trình này thực hiện việc viết 100 giá trị integer vào trong một tập tin

nhưng

có thể dễ dàng viết bất cứ kiểu dữ liệu nào khác

Ghi chú: Thông tin nhị phân là thông tin đã được định dạng kiểu lưu trữ dữ liệu

Ví dụ 12.9: Viết vào một tập tin nhị phân

-

//binarywriter.cs

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

{

FileStream myFile = new FileStream( args[0],

FileMode.CreateNew); BinaryWriter bwFile = new

BinaryWriter(myFile);

f o r

Trang 4

(int i=0; i < 100; i++)

{

bwFile.Write(i);

}

bwFile.Close()

;

myFile.Close()

;

}

Trang 5

}

}

}

-

Cũng tương tự như các ví dụ trên thì tên tập tin được đưa vào tham số dòng lệnh Nếu chương trình được nhập các tham số đầy đủ, chương trình sẽ thực hiện việc viết thông tin nhị phân vào trong tập tin, và không có output ra màn hình console Nếu chúng ta mở tập tin và xem

thì chỉ thấy các ký tự mở rộng đựơc thể hiện, sẽ không thấy những số đọc được

Trong chương trình này cũng chưa thực hiện việc xử lý các ngoại lệ Nếu thực hiện việc viết thông tin vào một tập tin đã hiện hữu, thì một ngoại lệ sẽ được phát sinh khi thực hiện lệnh:

FileStream myFile = new FileStream( args[0], FileMode.CreateNew);

Trong chương trình 12.9 này thực hiện việc tạo và mở tập tin khác với việc mở tập tin văn bản Lệnh trên tạo một đối tượng FileStream gọi là myFile Luồng này được gắn với tập tin thông qua bộ khởi dựng Tham số đầu tiên của bộ khởi dựng là tên của tập tin mà chúng ta

tạo (args[0]), tham số thứ hai là mode mà chúng ta mở Tham số này là giá trị kiểu liệt

FileMode, trong chương trình thì do chúng ta thực hiện việc tạo mới để ghi nên sử dụng giá

trị FileMode.CreateNew Bảng 12.3 sau liệt kê những mode giá trị khác trong kiểu liệt kê

FileMode

Append Mở một tập tin hiện hữu hoặc tạo một tập tin mới Create Tạo một tập tin mới Nếu một tập tin đã hiện hữu, nó

sẽ

bị xóa và một tập tin mới sẽ được tạo ra với cùng tên CreateNew Tạo một tập tin mới Nếu một tập tin đã tồn tại thì

một ngoại lệ sẽ được phát sinh

Open Mở tập tin hiện hữu

OpenOrCreate Mở tập tin hay tạo tập tin mới nếu tập tin chưa tồn tại Truncate Mở một tập tin hiện hữu và xóa nội dung của nó

Bảng 12.4: Giá trị của FileMode

Sau khi tạo ra FileStream, chúng ta cần thiết phải thiết lập để nó làm việc với dữ liệu nhị phân Dòng lệnh tiếp theo:

BinaryWriter bwFile = new BinaryWriter(myFile);

Dòng này thiết lập một kiểu viết dữ liệu nhị phân vào trong luồng bằng cách khai báo

Trang 6

kiểu

BinaryWrite Đối tượng thể hiện của BinaryWrite là bwFile được tạo ra myFile được truyền vào bộ khởi dựng BinaryWrite, nó sẽ gắn bwFile với myFile

for (int i=0; i < 100; i++)

{

bwFile.Write(i)

;

Trang 7

}

Vòng lặp này thực hiện việc viết trực tiếp giá trị integer vào trong BinaryWrite bwFile bằng cách sử dụng phương thức Write Dữ liệu được viết có thể là kiểu

dữ liệu đặc biệt khác Trong chương trình này thì sử dụng giá trị integer Khi thực hiện xong các công việc viết vào

tập tin, chúng ta cần thiết phải đóng luồng mà chúng tả đã mở

Đọc thông tin nhị phân từ tập tin

Trong phần trước chúng ta đã thực hiện việc viết thông tin nhị phân vào trong tập tin, và bây giờ chúng ta mong muốn được đọc các thông tin đã ghi vào trong tập tin Việc đọc thông

tin cũng khá đơn giản như là việc viết vào Chương trình 12.10 sau minh họa cho công việc

này

Ví dụ 12.10: Đọc thông tin nhị phân

-

// BinaryRead.cs: Doc thong tin tu file nhi

phan namespace Programming_CSharp

{

using System;

using System.IO;

public class

Tester

{

public static void Main( String[] args)

{

if ( args.Length < 1)

{

}

else

{

Console.WriteLine(“Phai nhap ten tap tin”);

FileStream myFile = new FileStream( args[0], FileMode.Open); BinaryReader brFile = new BinaryReader(myFile);

// đọc dữ liệu Console.WriteLine(“Dang doc tap tin ”);

while (brFile.PeekChar() != -1)

Trang 8

Console.Write(“<{0}>”, brFile.ReadInt32()); }

Console.WriteLine(“ Doc xong”);

brFile.Close();

Trang 9

myFile.Close();

}

}

}

}

-

Ngày đăng: 21/01/2014, 00:20

TỪ KHÓA LIÊN QUAN

w