You are on page 1of 46

Khoa CNTT

CNPM

LẬP TRÌNH Ì NHẬP XUẤT IO

Phạm Hoàng Hải

C4W - 1

Khoa CNTT

CNPM

1. NỘI DUNG
  

Xử lý hệ thống tập tin / thư mục Đọc / Xuất File Nén và Giải nén tập tin

Phạm Hoàng Hải

C4W - 2

Khoa CNTT

CNPM

2. TẬP TIN VÀ THƯ MỤC NHU CẦU?

Làm sao biết được trên hệ thống có những ổ đĩa nào? Làm sao lấy được danh sách tập tin và thư mục con của một thư mục nào đó? Làm sao truy xuất được các thuộc tính của một tập tin, thư mục? Làm sao giám sát được sự thay đổi của một tập tin tin, thư mục? …

Phạm Hoàng Hải

C4W - 3

Khoa CNTT

CNPM

2. TẬP TIN VÀ THƯ MỤC CÁC LỚP HỖ TRỢ?
      

DriveInfo class DirectoryInfo class FileInfo class Path class FileSystemWatcher class File class Directory class

Phạm Hoàng Hải

C4W - 4

5 . TẬP TIN VÀ THƯ MỤC LẤY DANH SÁCH Ỗ ĐĨA PHƯƠNG THỨC DriveInfo [] GetDrives() Lấy danh sách toàn bộ các ỗ đĩa trong hệ thống Phạm Hoàng Hải C4W .Khoa CNTT CNPM 2.

ỗ đĩa có cho phép truy xuất không Tên ỗ đĩa Lấy thư mục gốc của ỗ đĩa Tổng dung lượng trống ỗ đĩa Tổng g dung du g lượng gỗđ đĩa Nhãn ổ đĩa Phạm Hoàng Hải C4W . TẬP TIN VÀ THƯ MỤC DRIVEINFO MỘT SỐ THUỘC TÍNH CƠ BẢN AvailableFreeSpace Xác định dung lượng trống của ổ đĩa DriveFormat DriveType IsReady Name RootDirectory TotalFreeSpace ota S Size e Total VolumeLabel Lấy thông tin định dạng NTFS/FAT32 Thông tin loại ổ đĩa Trạng thái ổ đĩa.Khoa CNTT CNPM 2.6 .

Khoa CNTT CNPM 2. TẬP TIN VÀ THƯ MỤC DriveType Enum CÁC LOẠI Ỗ ĐĨA CDRom Fixed Network NorrotDirectory RAM Removable Unknow Ỗ đĩa quang CD-ROM.7 . DVD… Ỗ đĩa cứng Ổ đĩa mapped từ trên mạng Ỗ đĩa không có thư mục gốc Ỗ đĩa tạo từ RAM Ỗ đĩa dạng Removable Ỗ đĩa không xác định Phạm Hoàng Hải C4W .

Khoa CNTT CNPM 2. TẬP TIN VÀ THƯ MỤC FILESYSTEMINFO  FileSystemInfo: Lấy thông tin hệ thống của tập tin – thư mục MỘT SỐ THUỘC TÍNH CƠ BẢN Attributes CreationTime Exists Extension F llN FullName LastAccessTime LastWriteTime Name Thuộc tính tập tin – thư mục Lấy ngày tạo lập Kiểm tra tập tin thư mục có tồn tại Lấy phần mở rộng của tập tin Lấy đ đườ ờng dẫn đầy đủ Lần truy cập gần nhất trên tập tin – thư mục Lần ghi gần nhất trên tập tin – thư mục Lấy trên tập tin – thư mục Phạm Hoàng Hải C4W .8 .

TẬP TIN VÀ THƯ MỤC FILESYSTEMINFO MỘT SỐ PHƯƠNG THỨC CƠ BẢN Delete Refresh Xóa tập tin hoặc thư mục Cập nhật lại các thông tin thuộc tính Phạm Hoàng Hải C4W .9 .Khoa CNTT CNPM 2.

10 . TẬP TIN VÀ THƯ MỤC ĐỐI TƯỢNG DIRECTORYINFO CÁC THUỘC TÍNH Parent Root Lấy thư mục cha của thư mục hiện hành Lấy đường dẫn của thu mục hiện hành Phạm Hoàng Hải C4W .Khoa CNTT CNPM 2.

Lấy danh sách toàn bộ các file trong thư mục hiện hành. hành MoveTo Di chuyển thư mục hiện hành đến một nơi khác Phạm Hoàng Hải C4W . hành GetDirectories Lây danh sách của toàn bộ các thư mục trong thư mục hiện hành. là thư mục con của thư mục hiện hành.11 . GetFiles GetFileSystemInfos Lây ra thông tin FileSystemInfo thư mục hiện hành. TẬP TIN VÀ THƯ MỤC DIRECTORYINFO CÁC PHƯƠNG THỨC XỬ LÝ Create Tạo mới một đối tượng DirectoryInfo CreateSubdirectory Tạo mới một thư mục.Khoa CNTT CNPM 2.

Phạm Hoàng Hải C4W .Khoa CNTT CNPM 2. TẬP TIN VÀ THƯ MỤC ĐỐI TƯỢNG FILEINFO CÁC THUỘC TÍNH CƠ BẢN Directory DirectoryName IsReadOnly Length Lấy đối tượng DirectoryInfo chứa tập tin hiện hành Lấy tên thư mục chứa tập tin hiện hành Trạng thái file chỉ đọc Kích thuốc của file.12 .

TẬP TIN VÀ THƯ MỤC FILEINFO MỘT SỐ PHƯƠNG THỨC CƠ BẢN AppendText Tạo ra đối tượng StreamWriter.13 CopyTo Create CreateText Decrypt Encrypt MoveTo Open OpenRead… Phạm Hoàng Hải . Read/Write. Giả mã file bị mã hóa bởi người dùng Mã hóa file Di chuyễn file đế ến vị trí mới Mỡ file (read.…) Mở file với chế độ Read-Only C4W .Khoa CNTT CNPM 2. cho phép ghi thêm thông tin vào File Copy file đến thư mục khác Tạo mới file dựa trên thông tin hiện hành. Tạo mới một StreamWriter cho phép p p ghi g dữ liệu.

Lấy đường dẫn của thu mục đang theo dõi. Mặc đị Sửa Tên. . TẬP TIN VÀ THƯ MỤC FILESYSTEMWATCHER MỘT SỐ THUỘC TÍNH CƠ BẢN EnableRaisingEve Bật / tắt việc theo dõi file hay thư mục nts Filter Thiết lập filter các file cần theo dõi. Path Phạm Hoàng Hải C4W . “ ”  Theo dõi toàn bộ file IncludeSubdirecto Chỉ định có theo dõi các thư ries mục con không NotifyFilter Thiết lập theo dõi các loại thay ịnh Enable ( (Tạo. đổi. Chỉnh Sửa). .14 .Khoa CNTT CNPM 2. Xóa.

Khoa CNTT CNPM 2. TẬP TIN VÀ THƯ MỤC FILESYSTEMWATCHER PHƯƠNG THỨC XỬ LÝ WaitingForChang ed Gọi xử lý theo dõi thư mục/ tập tin.15 . CÁC SỰ KIỆN PHÁT SINH Changed Created Deleted Renamed Phát sinh khi có sự thay đổi Phát sinh khi có tạo file/directory Phát sinh khi xóa file/directory Phát sinh khi đổi tên. tên Phạm Hoàng Hải C4W .

drive. foreach (DriveInfo drive in drives) { Console.WriteLine("Drive: {0}".Name).16 .WriteLine("Type: {0}". } Phạm Hoàng Hải C4W . TẬP TIN VÀ THƯ MỤC CÁC XỬ LÝ CƠ BẢN  Làm sao biết được trên hệ thống có những ổ đĩa nào? DriveInfo[] drives = DriveInfo.DriveType). Console. drive.Khoa CNTT CNPM 2.GetDrives().

Khoa CNTT CNPM 2. TẬP TIN VÀ THƯ MỤC CÁC XỬ LÝ CƠ BẢN  Làm sao lấy được danh sách tập tin và thư mục con của một thư mục nào đó? DirectoryInfo ourDir = new DirectoryInfo(@"c:\windows"). foreach (FileInfo file in ourDir.17 .Name). Console.WriteLine("Directory: {0}".GetFiles()) ourDir GetFiles()) { Console. } Phạm Hoàng Hải C4W . file.FullName).WriteLine("File: {0}". ourDir.

Khoa CNTT CNPM 2.FullName). if (ourFile. TẬP TIN VÀ THƯ MỤC CÁC XỬ LÝ CƠ BẢN  Làm sao truy xuất được các thuộc tính của một tập tin.ini "). Console.WriteLine("Path : {0}".18 . thư mục? FileInfo ourFile = new FileInfo(@"c:\boot. } Phạm Hoàng Hải C4W .WriteLine("Filename : {0}".Name). ourFile.Exists) { Console.ourFile.

e.19 . static void watcher_Renamed(object sender.OldFullPath.WriteLine("Renamed from {0} to {1}".FullPath). } Phạm Hoàng Hải C4W . watcher. RenamedEventArgs e) { Console. watcher. thư mục? FileSystemWatcher watcher = new Fil S t W t h () FileSystemWatcher(). TẬP TIN VÀ THƯ MỤC CÁC XỬ LÝ CƠ BẢN  Làm sao giám sát được sự thay đổ ổi của một tập tin.EnableRaisingEvents t h E bl R i i E t =t true.Khoa CNTT CNPM 2.Renamed += new RenamedEventHandler(watcher_Renamed).Path = @"c:\". e. watcher.

di chuyển thư mục. lấy danh sách tập tin.Khoa CNTT CNPM 2. di chuyển file. sao chép file… Cung cấp tất cả các phương thức cần thiết cho việc tạo thư mục. TẬP TIN VÀ THƯ MỤC CÁC XỬ LÝ CƠ BẢN  File class  Cung cấp tất cả các phương thức cần thiết cho việc tạo file. xóa file. thư mục con…  Directory class  Phạm Hoàng Hải C4W .20 . xóa thư mục.

không thực sử thay đỗi phần mở rộng) Kết hợp 2 path.21 .Khoa CNTT CNPM 2. GetExtension GetFileName GetFileNameWith G tFil N With outExtension phần mở rộng g của file trong g Lấy p đường dẫn Trả về tên của file trong đường dẫn. Trả về tê T tên của fIl fIle trong t đ đườ ờng dẫn. chỉ thay đổi PathString. Phạm Hoàng Hải C4W . path nếu có thể. TẬP TIN VÀ THƯ MỤC ĐỐI TƯỢNG PATH MỘT SỐ PHƯƠNG THỨC CƠ BẢN ChangeExtension Thay đổi phần mở rộng của file trong đường dẫn. không lấy phần mở rộng. (Lưu ý. Combine GetDirectoryName Trả về trên của thư mục trong đường dẫn.

22 .Khoa CNTT CNPM 2. GetRandomFileNa Phát sinh một tên file ngẫu nhiên me G tT GetTempFile Fil Phát sinh i h file fil rác á t trong hệ thống và trả về đường dẫn của file vừa phát sinh. TẬP TIN VÀ THƯ MỤC ĐỐI TƯỢNG PATH MỘT SỐ PHƯƠNG THỨC CƠ BẢN GetPathRoot Trả về thu mục gốc của đường dẫn. Kiểm tra file có phần mở rộng ko Kiểm tra đường dẫn có thư mục gốc không HasExtension IsPathRooted Phạm Hoàng Hải C4W .

StreamWriter class BinaryReader class. XỬ LÝ ĐỌC/GHI FILE CÁC LỚP HỖ TRỢ    Stream class FileStream class StreamReader class. BinaryWriter class MemoryStream class BufferedStream class    Phạm Hoàng Hải C4W .23 .Khoa CNTT CNPM 3.

Khoa CNTT CNPM 3. XỬ LÝ ĐỌC/GHI FILE Stream MỘT SỐ THUỘC TÍNH CƠ BẢN CanRead CanSeek CanTimeOut CanWrite Length ReadTimeout WriteTimeout Position Luồng hỗ trợ đọc Luồng hỗ trợ di chuyễn con trỏ đọc ịnh xem luồng g có timeout Xác đị không Luồng hỗ trợ ghi Chiều dài (theo bytes) của luồng Thiết lập timeout cho phương thức Read Thiết lập timeout cho phương thức Write t te Gets or sets the virtual cursor for determining where in the stream the current possition is Phạm Hoàng Hải C4W .24 .

Phạm Hoàng Hải C4W .Khoa CNTT CNPM 3. XỬ LÝ ĐỌC/GHI FILE STREAM MỘT SỐ PHƯƠNG THỨC CƠ BẢN Close Flush Read ReadByte Seek SetLength Write WriteByte Đóng luồng và giải phóng tài nguyên Đẩy toàn bộ dữ liệu buffer trong luồng lên trên thiết bị Thực thi phương thức đọc mảng byte trên luồng. Đọc Byte tiếp theo Di chuyển vị trí con trỏ đọc Thiết lập chiều dài của Stream Ghi mảng byte lên trên luồng. Ghi một byte lên trên luồng.25 .

tránh truy xuất đồng thời lên File Mở khóa file.Khoa CNTT CNPM 3. XỬ LÝ ĐỌC/GHI FILE FILESTREAM  FileStream class: kế thừa Stream class MỘT SỐ THUỘC TÍNH CƠ BẢN Name Lấy tên của file MỘT SỐ PHƯƠNG THỨC CƠ BẢN Lock Unlock Khoa file. có thể truy xuất đồng thời lên file Phạm Hoàng Hải C4W .26 .

27 .Khoa CNTT CNPM 3. XỬ LÝ ĐỌC/GHI FILE  StreamReader class   Kế thừa TextReader class Dù để đ Dùng đọc các á fil file văn bản MỘT SỐ THUỘC TÍNH CƠ BẢN BaseStream CurrentEncoding EndOfStream Get the underlying stream that reader is reading Lấy thông tin định dạng của Stream Xác định con trỏ đọc đến cuối Stream chưa? Phạm Hoàng Hải C4W .

Khoa CNTT CNPM 3.28 . Đọc nguyên dòng trên luồng Đọc tất cả các kí tự tới cuối l ồng lu Read ReadBlock ReadLine ReadToEnd Phạm Hoàng Hải C4W . không di chuyễn con trỏ đọc. Đọ ọc khối kí tự tiếp theo trên luồng. c Thực thi phương thức đọc mảng các kí tự trên luồng. XỬ LÝ ĐỌC/GHI FILE StreamReader MỘT SỐ PHƯƠNG THỨC CƠ BẢN Close Peek Đóng luồng và giải phóng tài nguyên Trả về giá trị kí tự tiếp theo trong luồng.

Close().Open(@"C:\boot.Open. FileStream theFile = File. FileAccess.Close().Read).WriteLine(line).Khoa CNTT CNPM 3.29 . Phạm Hoàng Hải C4W . while (!rdr. StreamReader rdr = new StreamReader(theFile). FileMode. XỬ LÝ ĐỌC/GHI FILE  Đọc file văn bản e ode Ope .EndOfStream) { string line = rdr. theFile. } rdr.ini". Console.ReadLine().

Khoa CNTT CNPM 3. sau mỗi lệnh h Write Wi Get the uderlying stream that the reader is reading Lấy chế độ mã hóa hiện hành của luồng MỘT SỐ THUỘC TÍNH CƠ BẢN AutoFlush BaseStream Encoding Phạm Hoàng Hải C4W . XỬ LÝ ĐỌC/GHI FILE  StreamWriter class   Kế thừa TextWriter class Dù để ghi Dùng hi các á file fil văn bản Thiết lập cơ chế tự động Flush.30 .

31 .Khoa CNTT CNPM 3. XỬ LÝ ĐỌC/GHI FILE StreamWriter MỘT SỐ PHƯƠNG THỨC CƠ BẢN Close Write WriteLine Đóng luồng và giải phóng tài nguyên Ghi vào luồng g và Ghi một chuỗi kí tự vào luồng xuống hàng Phạm Hoàng Hải C4W .

XỬ LÝ ĐỌC/GHI FILE  Ghi file văn bản FileMode. theFile.WriteLine( Hello ).Write).Open(@"c:\somefile. FileMode FileAccess.Close().Khoa CNTT CNPM 3. writer WriteLine("Hello"). writer. FileStream theFile = File. Phạm Hoàng Hải C4W .Close().OpenOrCreate.32 . writer. StreamWriter writer = new StreamWriter(theFile).txt".

33 . XỬ LÝ ĐỌC/GHI FILE BinaryReader   Dùng để đọc file nhị phân Cung cấp các phương thức có dạng ReadXXX(ReadByte.Khoa CNTT CNPM 3. ( y ReadInt32…) ) để đọc nội dung file. Phạm Hoàng Hải C4W .

FileMode.bin".Open).ReadString().34 .Open(@"c:\somefile. BinaryReader reader = new BinaryReader(theFile). string s = reader.ReadInt64().ReadBytes(4). Phạm Hoàng Hải C4W .bin .Open(@ c:\somefile. long number = reader.Khoa CNTT CNPM 3. XỬ LÝ ĐỌC/GHI FILE  Đọc file nhị phân FileStream theFile = File. File. reader ReadString(). byte[] bytes = reader.

Khoa CNTT CNPM 3. XỬ LÝ ĐỌC/GHI FILE BinaryWriter   Dùng để ghi file nhị phân Cung cấp các phương thức Write với nhiều dạng tham số khác nhau để ghi nội dung file.35 . Phạm Hoàng Hải C4W .

Write). writer.Write(s). 100 }. writer. XỬ LÝ ĐỌC/GHI FILE  Ghi file nhị phân FileStream theFile = File. FileAccess.36 . string s = “Toi di hoc".Write(bytes). Phạm Hoàng Hải C4W .Write(number).Khoa CNTT CNPM 3. writer. long number = 100. 20. BinaryWriter writer = new BinaryWriter(theFile). byte[] bytes = new byte[] { 10.OpenOrCreate.Open(@"c:\somefile. FileMode.bin". 50.

XỬ LÝ ĐỌC/GHI FILE  MemoryStream class: kế thừa Stream class  Thuộc tính  Phương thức Phạm Hoàng Hải C4W .37 .Khoa CNTT CNPM 3.

writer. XỬ LÝ ĐỌC/GHI FILE MemoryStream memStrm = new MemoryStream().38 .WriteLine("Hello"). memStrm. StreamWriter(memStrm). Phạm Hoàng Hải C4W . writer. FileStream theFile = File.Khoa CNTT CNPM 3.WriteLine("Goodbye").WriteTo(theFile).txt").Flush().Create(@"c:\inmemory. writer. StreamWriter writer = new ( ).

39 . XỬ LÝ ĐỌC/GHI FILE BufferedStream   Thường dùng cho NetworkStream Tăng hiệu quả đọc/ghi dữ liệu Phạm Hoàng Hải C4W .Khoa CNTT CNPM 3.

WriteLine("Some data"). StreamWriter writer = new StreamWriter(buffered). BufferedStream buffered = new BufferedStream(newFile).Create(@"c:\test.Khoa CNTT CNPM 3. writer. Phạm Hoàng Hải C4W . XỬ LÝ ĐỌC/GHI FILE FileStream newFile = File.40 .txt").

NÉN VÀ GIẢI NÉN  Cho phép nén dữ liệu gốc tối đa là 4GB Kiểu nén: GZIP và DEFLATE Các lớp hỗ trợ     GZipStream class DeflateStream class Phạm Hoàng Hải C4W .41 .Khoa CNTT CNPM 4.

42 .Khoa CNTT CNPM 4. NÉN VÀ GIẢI NÉN GZipStream    Kế thừa Stream class Dùng để nén/giải nén tập tin theo GZIP Nén tập tin Phạm Hoàng Hải C4W .

( ).Khoa CNTT CNPM 4. 0. y [] Arr = new byte[4096]. CompressionMode.Write(Arr. 0. theByte = sourceFile. } Phạm Hoàng Hải C4W . 4096). FileStream destFile = File. 4096).Create(outFilename). y [ ].Read(Arr.Compress).43 . byte[] int theByte = sourceFile. GZipStream compStream = new GZipStream(sourceFile. while(theByte!=0) { compStream.OpenRead(inFilename). theByte). NÉN VÀ GIẢI NÉN GZipStream  Xử lý nén tập tin FileStream sourceFile = File.Read(Arr. 0.

Write(Arr.Khoa CNTT CNPM 4.Decompress). 0. CompressionMode Decompress). NÉN VÀ GIẢI NÉN GZipStream  Xử lý giải nén tập tin FileStream sourceFile = File. FileStream destFile = File. 0.OpenRead(inFilename). while (theByte != ! 0) { destFile.Create(outFilename). 4096).Read(Arr. ). y = compStream. 4096).Read(Arr. . byte[] Arr = new byte[4096]. theByte). 0. p ( . theByte } Phạm Hoàng Hải C4W . int theByte = compStream.44 . File Create(outFilename). CompressionMode. GZipStream compStream = new GZipStream(sourceFile.

Phạm Hoàng Hải C4W . NÉN VÀ GIẢI NÉN DeflateStream     Kết hợp giữa LZ77 và Huffman Dùng tương tự như GZipStream class Cho kích thước nén nhỏ hơn File nén không thể mở được bằng các chương trình giải nén khác.45 .Khoa CNTT CNPM 4.

Khoa CNTT CNPM 6. HỎI ĐÁP Phạm Hoàng Hải C4W .46 .