Trong bài viết này, chúng ta sẽ cùng tìm hiểu về 2 class Path và DriveInfo trong C#.
#1/2. Làm việc với đường dẫn Path
– Class Path cung cấp toàn bộ là phương thức và thuộc tính static để thao tác với đường dẫn trong C#.
– Các phương thức của class Path:
| Method / Property | Mô tả |
| ChangeExtension() | Thay đổi the extension của một path string. |
| Combine() | Kết hợp một chuỗi các chuỗi thành một đường dẫn. |
| GetDirectoryName() | Trả về thông tin thư mục cho chuỗi đường dẫn đã chỉ định. |
| GetExtension() | Trả về phần mở rộng của chuỗi đường dẫn đã chỉ định. |
| GetFileName() | Trả về tên file có phần mở rộng của chuỗi đường dẫn đã chỉ định. |
| GetFileNameWithoutExtension() | Trả về tên file không có phần mở rộng của chuỗi đường dẫn đã chỉ định. |
| GetFullPath() | Trả về đường dẫn tuyệt đối cho chuỗi đường dẫn đã chỉ định. |
| GetInvalidFileNameChars() | Trả về một mảng chứa các ký tự không được phép trong tên file. |
| GetInvalidPathChars() | Trả về một mảng chứa các ký tự không được phép trong path. |
| GetPathRoot() | Lấy thông tin thư mục gốc (root directory) của đường dẫn đã chỉ định. |
| GetRandomFileName() | Trả về ngẫu nhiên tên folder hoặc tên file. |
| GetTempFileName() | Tạo một file tạm thời có uniquely named (được đặt tên duy nhất trên ổ đĩa) và trả về đường dẫn đầy đủ của file tạm thời đó. |
| GetTempPath() | Trả về đường dẫn của thư mục tạm thời “Temp” của người dùng hiện tại. |
| HasExtension() | Xác định xem một path có bao gồm phần mở rộng của file hay không. |
| IsPathRooted() | Nhận một giá trị cho biết chuỗi đường dẫn đã chỉ định có chứa root hay không. |
– Các thuộc tính của class Path:
- AltDirectorySeparatorChar
- DirectorySeparatorChar
- InvalidPathChars
- PathSeparator
- VolumeSeparatorChar
– Demo:
using System;
using System.IO;
namespace MinhHoangBlog
{
class Program
{
static void Main(string[] args)
{
string goodFileName = @"D:\MinhHoangBlog\minhhn.com\myFile.txt";
string badFileName = @"D:\MinhHoangBlog\minhhn.com\";
string result;
result = Path.ChangeExtension(goodFileName, ".old");
// output "D:\MinhHoangBlog\minhhn.com\myFile.old"
result = Path.ChangeExtension(goodFileName, "");
// output "D:\MinhHoangBlog\minhhn.com\myFile."
result = Path.ChangeExtension(badFileName, ".old");
// output "D:\MinhHoangBlog\minhhn.com\.old"
result = Path.GetDirectoryName(goodFileName);
// output "D:\\MinhHoangBlog\\minhhn.com"
result = Path.GetExtension(goodFileName);
// output ".txt"
result = Path.GetFileName(goodFileName);
// output "myFile.txt"
result = Path.GetFileNameWithoutExtension(goodFileName);
// output "myFile"
result = Path.GetFullPath(goodFileName);
// output "D:\\MinhHoangBlog\\minhhn.com\\myFile.txt"
result = Path.GetPathRoot(goodFileName);
// output "D:\\"
result = Path.GetTempFileName();
// output "C:\\Users\\pc\\AppData\\Local\\Temp\\tmpE185.tmp"
result = Path.GetTempPath();
// output "C:\\Users\\pc\\AppData\\Local\\Temp\\"
string fileName = @"C:\mydir\myfile.ext";
string uncPath = @"\\myPc\mydir\myfile";
string relativePath = @"mydir\sudir\";
bool isFlg;
isFlg = Path.HasExtension(fileName);
// output "true"
isFlg = Path.HasExtension(uncPath);
// output "false"
isFlg = Path.IsPathRooted(fileName);
// output "true"
isFlg = Path.IsPathRooted(uncPath);
// output "true"
isFlg = Path.IsPathRooted(relativePath);
// output "false"
// Get current working directory (..\bin\Debug)
string workingDirectory = Environment.CurrentDirectory;
// Get the current PROJECT directory
string projectDirectory = Directory.GetParent(workingDirectory).Parent.FullName;
// Create specific path file
string csvPath = string.Format(@"{0}\CsvFile\Sample.csv", projectDirectory);
// Remove the last character if it's DirectorySeparatorChar
result = badFileName.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
// badFileName "D:\\MinhHoangBlog\\minhhn.com\\"
// output "D:\\MinhHoangBlog\\minhhn.com"
Console.ReadKey();
}
}
}
– Ngoài ra còn có các cách lấy application folder path:
- Application.StartupPath
- System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location)
- AppDomain.CurrentDomain.BaseDirectory (★)
- System.IO.Directory.GetCurrentDirectory()
- Environment.CurrentDirectory
- System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)
- System.IO.Path.GetDirectory(Application.ExecutablePath)
- HttpContext.Current.Server.MapPath();
- System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath;
#2/2. Làm việc với DriveInfo
– Class DriveInfo cung cấp các phương thức và thuộc tính truy cập thông tin của ổ cứng và CD-Rom.
– Các phương thức và thuộc tính của class DriveInfo:
| Method / Property | Mô tả |
| GetDrives() | Trả về là một mảng DriveInfo[], là tên ổ đĩa của tất cả các ổ đĩa logic trên máy tính. |
| AvailableFreeSpace | Cho biết lượng không gian trống có sẵn trên một ổ đĩa, tính bằng byte. |
| DriveFormat | Lấy tên của hệ thống file, chẳng hạn như NTFS hoặc FAT32. |
| DriveType | Lấy loại ổ đĩa như là CD-ROM, loại có thể tháo rời, network hay cố định. |
| IsReady | Trả về true nếu ổ đĩa đã sẵn sàng, false nếu ổ đĩa chưa sẵn sàng. |
| Name | Lấy tên của ổ đĩa, chẳng hạn như: C:\ |
| RootDirectory | Lấy thư mục gốc (root directory) của một ổ đĩa. |
| TotalFreeSpace | Lấy tổng số dung lượng trống có sẵn trên một ổ đĩa, tính bằng byte. |
| TotalSize | Lấy tổng kích thước của không gian lưu trữ trên một ổ đĩa, tính bằng byte. |
| VolumeLabel | Get / Set FileAttribution nhãn cho ổ đĩa, như C, D, E,… |
Có thể bạn quan tâm: Thao tác với tập tin và thư mục trong C#.

[…] Có thể bạn quan tâm: Thao tác với đường dẫn Path và DriveInfo trong C#. […]