You are on page 1of 10

2/21/2024

LẬP TRÌNH GIAO DIỆN

Chương 6. Làm
việc với tập tin và
thư mục

CHUẨN ĐẦU RA – NỘI DUNG


•Chuẩn đầu ra
• Tạo, đọc, ghi và cập nhật được file tuần tự và nhị phân.
• Sử dụng được lớp File và Directory để truy xuất được thông tin
về file và thư mục lưu trữ trên máy tính.
• Sử dụng được các lớp FileStream, StreamReader,
StreamWriter để đọc và ghi file text.
• Sử dụng được lớp FileStream và BinaryFormater để đọc và ghi
các đối tượng vào file
•Nội dung:
1. Lớp File, Directory và Stream
2. Làm việc với tập tin và thư mục
3. Kỹ thuật Serialization

ThS. Nguyễn Thị Mai Trang 2

1
2/21/2024

LẬP TRÌNH GIAO DIỆN

Chương 6. Làm
việc với tập tin và
thư mục

6.1 Lớp File, Directory và Stream

6.1 Lớp File, Directory và Stream


•Muốn đọc/ghi tập tin, truyền dữ liệu qua mạng, dữ liệu phải
được chuyển về dạng byte
•Sử dụng lớp Stream (và các lớp kế thừa) trong .NET
Framework có thể sử dụng trong các thao tác,…
•Cần khai báo namespace System.IO
•Các lớp thông dụng:
• Stream, FileStream
• File, FileInfo, Directory, DirectoryInfo
• BinaryReader/ BinaryWriter
• TextReader, TextWriter
• StringReader, StringWriter

ThS. Nguyễn Thị Mai Trang 4

2
2/21/2024

Lớp File, Directory và Stream


•Class File •Class Directory
• AppentText •CreateDirectory
• Copy •Delete
• CreateText •Exists
• Delete
•GetCreationTime
• Exists
•GetLastAccessTime
• GetCreationTime
• GetLastAccessTime •GetLastWriteTime
• GetLastWriteTime •Move
• Move •GetFile
• OpenOpenRead •GetDirectory
• OpenTextOpenWrite •GetLogicalDrive

ThS. Nguyễn Thị Mai Trang 5

LẬP TRÌNH GIAO DIỆN

Chương 6. Làm
việc với tập tin và
thư mục

6.2 Làm việc với tập tin và thư mục

3
2/21/2024

6.2 Làm việc với file và thư mục


•Đọc, ghi tập tin nhị phân
• Tạo đối tượng lớp Stream
• Đọc từ tập tin: File.OpenRead
• Ghi vào tập tin: File.OpenWrite

ThS. Nguyễn Thị Mai Trang 7

Làm việc với file và thư mục (tt)


•Đọc, const int SIZE = 1024;
Stream inStream = null, outStream = null;
ghi try
tập tin {
nhị phân inStream = File.OpenRead(lbSource.Text);
outStream = File.OpenWrite(lbDestination.Text);
byte[] buffer = new byte[SIZE];
int byRead = 0;
while ((byRead = inStream.Read(buffer, 0, SIZE)) > 0)
{
outStream.Write(buffer, 0, byRead);
}
MessageBox.Show("Write file successfully!");
}
catch { }
finally{
inStream.Close();
outStream.Close();
}

ThS. Nguyễn Thị Mai Trang 8

4
2/21/2024

Làm việc với file và thư mục (tt)


•Đọc, ghi tập tin văn bản:
• StreamReader: Read, ReadLine, ReadToEnd
• StreamWriter: Write, WriteLine
private void ReadWriteTextFile(string srcFile, string destFile)
{
StreamReader sr = null; StreamWriter sw = null;
try {
sr = new StreamReader(srcFile);
sw = new StreamWriter(destFile);
string text = "";
do {
text = sr.ReadLine();
sw.WriteLine(text);
}while (text != null);
}
catch { }
finally { sr.Close(); sw.Close(); }
}
ThS. Nguyễn Thị Mai Trang 9

Làm việc với file và thư mục (tt)


•Tạo, xóa, di chuyển file:
• File.Create ( "file_name" );
• File.Delete ( "file_name" );
• File.Move ( "source_file" , "dest_file" )
•Tạo, xóa, di chuyển thư mục:
• Directory.CreateDirectory ( "dir_name" );
• Directory.Delete ( "dir_name" );
• Directory.Move ( "source_dir" , "dest_dir")
•Lấy danh sách ổ đĩa, file, thư mục con:
• Directory.GetFiles ("dir_name");
• Directory.GetDirectories ("dir_name");
• Directory.GetLogicalDrives();

ThS. Nguyễn Thị Mai Trang 10

10

5
2/21/2024

Làm việc với file và thư mục (tt)


•Truy xuất thông tin của file:
• File.GetCreationTime ("file_name");
• File.GetLastAccessTime ("file_name");
• File.GetAttributes ("file_name");
• File. GetLastWriteTime ( "file_name");
•Truy xuất thông tin của thư mục:
• Directory.GetCreationTime("dir_name");
• Directory.GetLastAccessTime("dir_name");
• Directory.GetAttributes("dir_name");
• Directory.GetLastWriteTime( "dir_name" );

ThS. Nguyễn Thị Mai Trang 11

11

LẬP TRÌNH GIAO DIỆN

Chương 6. Làm
việc với tập tin và
thư mục

6.3 Kỹ thuật Serialization

12

6
2/21/2024

6.3 Serialization
•Serialization
• Lưu đối tượng trong chương trình vào file, bộ nhớ, truyền qua
mạng.
• Ví dụ: tạo và vẽ một đối tượng hình tròn, lưu vào file.
•Deserialization:
• Phục hồi dữ liệu về trạng thái ban đầu.
• Ví dụ: đọc file đã lưu đối
tượng hình tròn trước đó,
vẽ lại trên giao diện.

ThS. Nguyễn Thị Mai Trang 13

13

Serialization (tt)
•.NET Framework cung cấp 2 kỹ thuật serialize:
•Binary serialize (serialize nhị phân):
•Giữ nguyên cấu trúc đối tượng
•Lưu đối tượng vào clipboard, ghi ra file, truyền qua mạng.
•XML và SOAP Serialize:
•Chỉ serialize các trường dữ liệu public
•Truyền dữ liệu từ các dịch vụ như web service.

ThS. Nguyễn Thị Mai Trang 14

14

7
2/21/2024

Serialization (tt)
•Các đối tượng cơ cở đều có khả năng serialize.
•Đối tượng do người sử dụng định nghĩa: đặt [Serializable]
trên khai báo lớp
•Các thành phần (phương thức, biến thành viên, thuộc
tính,…) không muốn serialize: đặt [NonSerialized] trên các
khai báo
•Thực thi interface IFormatter
• (namespace System.Runtime.Serialization)

ThS. Nguyễn Thị Mai Trang 15

15

Serialization (tt)
•BinaryFormatter: ➔ nhị phân
• namespace System.Runtime.Serialization.Formatters.Binary
•SoapFormatter: ➔ XML
• namespace System.Runtime.Serialization.Formatters.Soap
•Interface IFormatter cung cấp hai phương thức
• Serialize()
• Deserialize()

ThS. Nguyễn Thị Mai Trang 16

16

8
2/21/2024

Serialization (tt)
•Các bước Serialization:
• Đặt [Serializable] trên khai báo lớp
• Khai báo các namespace
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
• Tạo đối tượng FileStream
FileStream stream = new FileStream(“filename", FileMode.Create,
FileAccess.Write);
• Tạo đối tượng BinaryFormatter
BinaryFormatter bf = new BinaryFormatter();
• Gọi phương thức Serialize
bf.Serialize(stream, objclass);

ThS. Nguyễn Thị Mai Trang 17

17

Serialization (tt)
•Các bước Deserialization:
• Khai báo các namespace:
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
• Tạo đối tượng FileStream
FileStream stream = new FileStream(“filename",
FileMode.Open,FileAccess.Read);
• Tạo đối tượng BinaryFormatter
BinaryFormatter bf = new BinaryFormatter();
• Gọi phương thức Deserialize
objclass = (objclass) bf. Deserialize(stream);

ThS. Nguyễn Thị Mai Trang 18

18

9
2/21/2024

19

10

You might also like