363
Chương 9: File, thư mục, và I/O
7.
7.
Đ c và ghi file văn b n
ọ
ả
Đ c và ghi file văn b n
ọ
ả
Bạn cần ghi dữ liệu vào một file văn bản theo kiểu mã hóa ASCII, Unicode, hay
UTF-8.
Tạo một đối tượng
System.IO.FileStream
tham chiếu đến file. Để ghi file, hãy gói
FileStream
trong một
System.IO.StreamWriter
và sử dụng phương thức nạp
chồng
Write
. Để đọc file, hãy gói
FileStream
trong một
System.IO.StreamReader
và sử dụng phương thức
Read
hay
ReadLine
.
.NET cho phép bạn ghi hay đọc văn bản bằng lớp
StreamWriter
và
StreamReader
. Khi ghi dữ
liệu với
StreamWriter
, hãy sử dụng phương thức
StreamWriter.Write
. Phương thức này được
nạp chồng để hỗ trợ tất cả các kiểu dữ liệu thông thường trong C# .NET, bao gồm chuỗi, ký
tự, số nguyên, số thực dấu chấm động, số thập phân,... Tuy nhiên, phương thức
Write
luôn
chuyển dữ liệu thành văn bản. Nếu muốn chuyển văn bản này trở về kiểu ban đầu thì bạn nên
sử dụng
WriteLine
để bảo đảm mỗi giá trị được đặt trên một dòng riêng.
Có nhiều cách mô tả một chuỗi dưới dạng nhị phân, tùy thuộc vào cách mã hóa. Các kiểu mã
hóa thông thường là:
•
ASCII—sử dụng 7 bit để mã hóa mỗi ký tự trong chuỗi. Dữ liệu được mã hóa theo
ASCII không thể chứa các ký tự Unicode mở rộng. Khi sử dụng kiểu mã hóa ASCII
trong .NET, các bit được đệm thêm để mảng byte kết quả sẽ có 1 byte cho mỗi ký tự.
•
Full Unicode, hay UTF-16—sử dụng 16 bit để mã hóa mỗi ký tự trong chuỗi, nên mảng
byte kết quả sẽ có 2 byte cho mỗi ký tự.
•
UTF-7 Unicode—sử dụng 7 bit cho các ký tự ASCII bình thường và nhiều cặp 7 bit cho
các ký tự mở rộng. Kiểu mã hóa này chủ yếu dùng cho các giao thức 7 bit, chẳng hạn
mail.
•
UTF-8 Unicode—sử dụng 8 bit cho các ký tự ASCII bình thường và nhiều cặp 8 bit cho
các ký tự mở rộng. Mảng byte kết quả sẽ có 1 byte cho mỗi ký tự (giả sử không có ký
tự mở rộng).
.NET cung cấp một lớp cho mỗi kiểu mã hóa trong không gian tên
System.Text
. Khi sử dụng
StreamReader
và
StreamWriter
, bạn có thể chỉ định kiểu mã hóa hoặc sử dụng kiểu mặc định
là UTF-8.
Khi đọc thông tin, sử dụng phương thức
Read
hay
ReadLine
của lớp
StreamReader
. Phương
thức
Read
đọc một ký tự, hay số ký tự do bạn chỉ định, và trả về một ký tự hay mảng ký tự.
Phương thức
ReadLine
trả về một chuỗi chứa toàn bộ nội dung một hàng.
Ứng dụng Console dưới đây minh họa việc ghi và đọc một file văn bản:
using System;
using System.IO;
using System.Text;
public class TextFileTest {