Kết quả:
Dang doc tap tin
<0> <1> <2> <3> <4> <5> <6> <7> <8> <9> <10> <11> <12> <13> <14> <15> <16>
<17>
<18>
<19>
<20
>
<21
>
<22
>
<23
>
<24
>
<25
>
<26
>
<27> <28> <29
>
<30
>
<31
>
<32
>
<33>
<34>
<35>
<36
>
<37
>
<38
>
<39
>
<40
>
<41
>
<42
>
<43> <44> <45
>
<46
>
<47
>
<48
>
<49>
<50>
<51>
<52
>
<53
>
<54
>
<55
>
<56
>
<57
>
<58
>
<59> <60> <61
>
<62
>
<63
>
<64
>
<65>
<66>
<67>
<68
>
<69
>
<70
>
<71
>
<72
>
<73
>
<74
>
<75> <76> <77
>
<78
>
<79
>
<80
>
<81>
<82>
<83>
<84
>
<85
>
<86
>
<87
>
<88
>
<89
>
<90
>
<91> <92> <93
>
<94
>
<95
>
<96
>
<97>
<98> <99> Doc xong!
Với ứng dụng này, chúng ta có thể đọc dữ liệu mà chúng ta đã viết trong ví dụ trước.
Trong ví
dụ này chúng ta tạo ra luồng FileStream. Lúc này, mode thao tác của tập tin được sử
dụng là mode FileMode.Open. Sau đó chúng ta thực hiện việc gắn luồng này với
luồng BinaryReader trong dòng tiếp sau, luồng này sẽ giúp cho chúng ta đọc thông tin
nhị phân:
FileStream myFile = new FileStream( args[0],
FileMode.Open); BinaryReader brFile = new
BinaryReader(myFile);
Sau khi tạo ra luồng giúp cho việc đọc thông tin nhị phân từ tập tin, chương trình bắt đầu
đọc
thông qua vòng lặp:
while (brFile.PeekChar() != -1)
{
Console.Write(“<{0}>”, brFile.ReadInt32());
}
Ở đây có một vài sự khác nhỏ, phương thức PeekChar của lớp BinaryReader được sử
dụng. Phương thức này sẽ lấy ký tự kế tiếp trong luồng. Nếu ký tự kế tiếp là cuối tập
tin thì giá trị -1 được trả về. Ngược lại, thì ký tự kế tiếp được trả về Khi ký tự kế tiếp
không phải ký tự cuối
tập tin thì lệnh bên trong vòng lặp sẽ đọc một số integer từ đối tượng BinaryStream
brFile.
Phương thức được sử dụng để đọc một số nguyên là ReadInt32, chúng ta sử dụng
kiểu tên của Framework tốt hơn là kiểu do C# đưa ra. Nên nhớ rằng, tất cả những
lớp từ Framework điều được gọi bởi ngôn ngữ C# và chúng không phải là một
bộ phận của ngôn ngữ C#. Những lớp này còn được sử dụng tốt bởi những ngôn ngữ
khác C#.
Ngoài ra lớp BinaryReader còn có những ph
ương thức khác để thực hiện việc đọc các
kiểu dữ liệu khác nhau. Những phương thức đọc này được sử dụng cùng với cách mà
ReadInt32 được
sử dụng trong chương trình. Bảng 12.4 sau liệt kê một số phương thức dùng để đọc các
kiểu
dữ liệu.
Phương thức Ý nghĩa
Read
Đọc những ký tự và chuyển vị trí đọc sang vị trí tiếp theo.
Phương thứcnàyđược nạ
p
chồng gồm3 phương thức.
ReadBoolean
Đọc một giá trị boolean từ luồng hiện thời và chuyển vị trí
đọc
sang
m
ột
b
y
t
e.
ReadByte
Đọc byte kế tiếp từ luồng hiện thời và chuyển vị trí đọc
sang 1
b
y
te.
ReadBytes
Đọc n byte từ luồng hiện thời sang một mảng byte và
chuyển vị
t
r
í đọc sang n b
y
te.
ReadChar
Đọc vị trí kế tiếp trong luồng hiện hành và chuyển vị trí đọc
của luồng theo sau sử dụng mã hóa và ký tự xác định đượ
c
đọc từ
luồng.
ReadChars
Đọc n ký tự từ luồng hiện hành vào một mảng n ký tự
.
Và chuyển vị trí đọc của luồng theo sau sử dụng mã hóa
v
ký tự
xác định được đọc từ luồng.
Rea
d
Decimal
Đọc giá trị decimal và chuyển vị trí đọc sang 16 byte.
ReadDouble
Đọc giá trị thực 8 byte và chuyển vị trí đọc sang 8 byte.
ReadInt16
Đọc giá trị 2 byte integer có dấu và chuyển vị trí đọc
sang 2
b
y
te.
ReadInt32
Đọc giá trị 4 byte integer có dấu và chuyển vị trí đọc
sang 4
b
y
te.
ReadInt64
Đọc giá trị 8 byte integer có dấu và chuyển vị trí đọc sang 8
b
y
t
e
ReadSByte
Đọc một signed byte từ luồng và chuyển vị trí đọc sang 1
b
y
t
e.
ReadSingle
Đọc giá trị thực 4 byte từ luồng và chuyển vị trí đọc sang 4
b
y
t
e.
ReadString
Đọc một chuỗi từ luồng. Chuỗi được cố định chiều dài
trước.
Và được mã hóa
m
ỗilần như là số ngu
y
ên 7
b
it.
ReadUInt16
Đọc giá trị 2-byte unsigned integer từ luồng. Sử dụng mã
hóa thứ tự nhỏ ở cuối (little endian encoding). Và chuyển v
ị
trí hiện
hành sang 2
b
yte.
ReadUInt64 Đọc 8-byte unsigned integer từ luống hiện hành và chuyển
sang
8 byte.
Bảng 12.4: Các phương thức đọc của BinaryReader.
Câu hỏi và trả lời
Câuhỏi
1: Các ngôn ngữ được hỗ trợ bởi .NET phải tuân thủ theo quy tắc nào không?
Trả l ời 1
: Như đã trình bày bên trên, các ngôn ngữ .NET phải tuân thủ theo quy định
chung
để có thể hoạt động trên nền của .NET. Những quy định này được gọi là Common
Language Specification (CLS). CLS đưa ra những kiểu dữ liệu chung và các tập
luật để thao tác trên kiểu dữ liệu này, CLS cho phép tạo ra một môi trường thực
thi chung mà không cần quan tâm đến từng ngôn ngữ được sử dụng. Lợi ích của
CLS là mã nguồn được viết thống nhất để quản lý, mã ngu
ồn được viết trong ngôn
ngữ này có thể được sử dụng bởi một ngôn ngữ khác.
Câu hỏi 2
: Nếu muốn tìm hiểu về các lớp được cung cấp bởi .NET một cách chi tiết thì
phải tìm ở đâu?
Trả lời 2
: Để tìm hiểu chi tiết các lớp của .NET thì chúng ta có thể tìm trong thư
viện trực tuyến của Microsoft có tên là MSDN Online, thư viện này chứa tất cả các
thông tin liên quan đến .NET Framework mà người học cần quan tâm. Thư viện
này thường xuyên được cập nhật và chứa những thông tin mới nhất về các phiên bản
của .NET.
Câu hỏi thêm
Câuhỏi
1: Để truy xuất thời gian của đồng hồ hệ thống chúng ta phải dùng lớp
nào?
Câuhỏi
2: Thông tin về máy tính có thể được truy xuất thông qua lớp nào?
Câuhỏi
3: Tham số dòng lệnh là gì? Làm thế nào để lấy được tham số dòng lệnh?
Câu hỏi 4
: Lớp thao tác các phép toán học cơ bản? Chúng ta có thể tạo thể hiện của lớp
này hay không?
Câu hỏi 5
: Lớp thao tác tập tin File chứa trong namespace nào? Các thao tác chính
được thực hiện trên tập tin?
Câuhỏi
6: Lớp nào cung cấp các thông tin về tập tin? Các phương thức chính của lớp
này?
Câuhỏi
7: Luồng là gì? Phân biệt giữa tập tin và luồng?
Câuhỏi
8: Có mấy cách thức tạo tập tin? Cho biết thứ tự đọc của một tập tin?
Câu hỏi 9
: Sự khác nhau giữa lớp File và FileInfo? Khi nào thì sử dụng lớp File tốt
hơn là
sử dụng FileInfo?
Câu hỏi 10: Khi tạo một tập tin mới trùng với tên của một tập tin cũ trong cùng một vị trí
thư mục thì chuyện gì xảy ra?
Câu hỏi 11
: Nếu muốn viết dữ liệu đã định dạng như là kiểu số thì dùng cách viết vào tập
tin dạng nào?
Bài tập
Bài tập 1: Viết một chương trình minh họa việc truy xuất thông tin hệ thống của máy
tính đang sử dụng. Thông tin này bao gồm: tên máy tính, hệ điều hành, bộ nhớ, đĩa
cứng
Bài tập 2
: Viết chương trình minh họa một máy tính cá nhân cho phép thực hiện các
phép toán cơ bản. Chương trình hiện ra một menu các lệnh và mỗi lệnh được gán cho
một số: như công thì số 1, trừ số 2, nhân 3, Cho phép người dùng chọn một lệnh
thông qua nhập vào số tương ứng. Sau đó cho người dùng nhập vào từng toán hạng
rồi thực hiện phép toán và cuối cùng in kết quả ra màn hình.
Bài tập 3
: Viết chương trình cho phép xem thông tin về một tập tin. Chương trình cho
người dùng nhập vào tên tập tin rồi sau đó lần lượt hiển thị các thông tin như: thuộc
tính tập tin, ngày giờ tạo lập, kích thước tập tin
Bài tập4
: Viết chương trình xem tập tin văn bản giống như lệnh type của DOS. Chương
trình cho phép người dùng nhập tên tập tin thông qua tham số dòng lệnh. Nếu người
dùng không nhập qua tham số dòng lệnh thì yêu cầu nhập vào.
Bài tập 5
: Viết chương trình cho phép người dùng nhập vào một mảng số nguyên. Sau đó
sắp xếp mảng này theo thứ tự tăng dần rồi lưu mảng vào một tập tin trên đĩa với dạng nhị
phân.
. < 45
>
<46
>
<47
>
<48
>
<49>
< ;50 >
< ;51 >
< ;52
>
< ;53
>
< ;54
>
< ;55
>
< ;56
>
< ;57
>
< ;58
>
< ;59 >.
< ;52
>
< ;53
>
< ;54
>
< ;55
>
< ;56
>
< ;57
>
< ;58
>
< ;59 > <60> <61
>
<62
>
<63
>
<64
>
< 65& gt;
<66>
<67>
<68
>
<69
>
<70
>
<71
>
<72
>
<73
>
<74
>
< 75& gt;