[.NET] Làm việc với file
Đọc thông tin ổ đĩa
Thư viện .NET cung cấp lớp
DriveInfo tại namespace System.IO giúp đọc thông tin các ổ đĩa có trong hệ thống. Phương thức DriveInfo.GetDrives() trả về mảng gồm các đối tượng DriveInfo, mỗi đối tượng chứa thông tin về một ổ đĩa. Có thể tham khảo các thuộc tính:| Thuộc tính | Ý nghĩa |
|---|---|
| IsReady | true ổ đĩa ở trạng thái sẵn sàng (hoạt động) - ví dụ ổ đĩa CD nếu không có đĩa thì không sẵn sàng false |
| DriveType | kiểu ổ đĩa (System.IO.DriveType) : CDRom, Fixed, Network, NoRootDirectory, Ram, Removable, Unknown |
| VolumeLabel | Nhãn đĩa |
| DriveFormat | Chuỗi cho biết định dạng đĩa: NTFS, FAT32, FAT, devfs ... |
| AvailableFreeSpace | Số byte có hiệu lực còn trống (theo hạn ngạch người dùng) |
| TotalFreeSpace | Số byte còn trống |
| TotalSize | Tổng số byte trên đĩa |
using System; using System.IO; namespace CS16_Files { public class GetDriveInfomation { public static void GetDrivesInfo() { DriveInfo[] allDrives = DriveInfo.GetDrives(); // lấy các ổ đĩa foreach (DriveInfo d in allDrives) { Console.WriteLine("Drive {0}", d.Name); Console.WriteLine(" Drive type: {0}", d.DriveType); if (d.IsReady == true) { Console.WriteLine(" Volume label: {0}", d.VolumeLabel); Console.WriteLine(" File system: {0}", d.DriveFormat); Console.WriteLine(" Available space to current user:{0, 15} bytes", d.AvailableFreeSpace); Console.WriteLine(" Total available space: {0, 15} bytes", d.TotalFreeSpace); Console.WriteLine(" Total size of drive: {0, 15} bytes ", d.TotalSize); } } } } }
GetDriveInfomation.GetDrivesInfo();
Drive /
Drive type: Fixed
Volume label: /
File system: apfs
Available space to current user: 222470746112 bytes
Total available space: 224261296128 bytes
Total size of drive: 499455598592 bytes
Drive /dev
Drive type: Ram
Volume label: /dev
File system: devfs
Available space to current user: 0 bytes
Total available space: 0 bytes
Total size of drive: 193536 bytes
Lớp Path - Hỗ trợ làm việc với đường dẫn
Để hỗ trợ quản lý, tạo các đường dẫn đến file, thư mục - nhất là hỗ trợ cross-platform thì lớp tĩnh
System.IO.Path chứa các phương thức (tĩnh) với mục đích đó.| Phương thức | Ý nghĩa |
|---|---|
Path.DirectorySeparatorChar | Thuộc tính chứa ký tự phân cách đường dẫn thư mục (\ trên Windows, / trên *nix) |
Path.PathSeparator | Thuộc tính chứa ký tự phân chia thư mục trong biến môi trường |
Combine | Kết hợp các chuỗi thành dường dẫnvar path = Path.Combine("home", "ReadMe.txt"); // "home/ReadMe.txt" |
ChangeExtension | Thay đổi phần mở rộng của đường dẫnvar path = Path.ChangeExtension("/home/abc/ReadMe.txt", "md"); // "/home/abc/ReadMe.md" |
GetDirectoryName | Lấy đường dẫn đến file (thư mục)var path = Path.GetDirectoryName("/home/abc/zyz/ReadMe.txt"); // "/home/abc/zyz" |
GetExtension | Lấy phần mở rộngvar path = Path.GetExtension("/home/ReadMe.txt"); // ".txt" |
GetFileName | Lấy tên filevar path = Path.GetFileName("/home/abc/ReadMe.txt"); // "ReadMe.txt" |
GetFileNameWithoutExtension | Lấy tên filevar path = Path.GetFileNameWithoutExtension("/home/ReadMe.txt"); // "ReadMe" |
GetFullPath | Lấy đường dẫn đầy đủ - từ đường dẫn tương đốivar path = Path.GetFullPath("ReadMe.txt"); |
GetPathRoot | Lấy gốc của đường dẫn |
GetRandomFileName | Tạo tên file ngẫu nhiênvar path = Path.GetRandomFileName(); |
GetTempFileName | Tạo file duy nhất, rỗngvar path = Path.GetTempFileName(); |
Để lấy đường dẫn đến một số thư mục đặc biệt của hệ thống, có thể dùng phương thức
Environment.GetFolderPath. Ví dụ, lấy thư mục MyDocumentvar path_mydoc = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
Làm việc với lớp File
Lớp
System.IO.File cung cấp cho bạn cách thức đơn giản để làm việc với các tệp. Nó có nhiều phương thức cho những mục đích khác nhau File class, như copy, xóa, di chuyển, lưu text vào file, đọc nội dung file, kiểm tra sự tồn tại, tra cứu thông tin về file ...File.WriteAllText
Hàm này tạo ra file mới (nếu đã có file bị ghi đè), ghi vào nó một nội dung text, rồi đóng file luôn. Ví dụ, lưu vào file test.txt một nội dung, file đó ở đường dẫn đến thư mục MyDocument của hệ thống.
var filename = "test.txt"; string contentfile = "Xin chào! xuanthulab.nét"; var directory_mydoc = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); var fullpath = Path.Combine(directory_mydoc, filename); File.WriteAllText(filename, contentfile); Console.WriteLine(filename);
Với
WriteAllText file luôn được tạo mới (ghi đè), nếu file đó đã tồn tại - bạn muốn nối thêm nội dung vào nội dung có sẵn thì hãy dùng đến AppendAllText. Ví dụ sau, nếu file đã tồn tại thì nối thêm nội dung, nếu chưa tồn tại thì tạo mới.var filename = "test.txt"; string contentfile = "\nXin chào! xuanthulab.net - " + DateTime.Now.ToString(); var directory_mydoc = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); var fullpath = Path.Combine(directory_mydoc, filename); if (File.Exists(fullpath)) { // File đã tồn tại - nối thêm nội dung File.AppendAllText(fullpath, contentfile); } else { // tạo mới vì chưa tồn tại file File.WriteAllText(fullpath, contentfile); } // Đọc nội dung File Console.WriteLine(fullpath); string s = File.ReadAllText(fullpath); Console.WriteLine(s);
File.ReadAllText
Hàm này thì đọc nội dung file.
string s = File.ReadAllText(fullpath); Console.Write(s);
Ngoài ra bạn cũng có thể sử dụng các phương thức
File.Create(filename)tạo fileFile.Delete(filename)xóa fileFile.Exists(filename)kiểm tra file có tồn tạiFile.Copy(path_src, path_des)copy fileFile.Move(path_src, path_des)di chuyển file
Làm việc với lớp Directory
Lớp
System.IO.Directory cung cấp các phương thức chuyên tương tác với các thư mục.| Phương thức | Ý nghĩa |
|---|---|
Exists(path) | Kiểm tra xem thư mục có tồn tại (true) hay không (false) |
CreateDirectory(path) | Tạo thư mục, trả về đối tượng System.IO.DirectoryInfo chứa thông tin thư mục. |
Delete(path) | Xóa thư mục. |
GetFiles(path) | Lấy các file trong thư mục. |
GetDirectories(path) | Lấy các thư mục trong thư mục. |
Move(src, des) | Di chuyển thư mục. |
Nhận xét
Đăng nhận xét