C# 文件系统
檢查驅動器信息
DriveInfo[] drives = DriveInfo.GetDrives();
foreach(var drive in drives)
{
if (drive.IsReady)
{
Console.WriteLine(new String('*',30));
Console.WriteLine($"Drive name:{drive.Name}");
Console.WriteLine($"Format:{drive.DriveFormat}");
Console.WriteLine($"Root directory:{drive.RootDirectory}");
Console.WriteLine($"Free Space:{drive.TotalFreeSpace/1024d/1024d/1024d }GB");
Console.WriteLine($"Available Space:{drive.AvailableFreeSpace / 1024 / 1024d / 1024d}GB");
Console.WriteLine($"Total size:{drive.TotalSize / 1024d / 1024d/1024d}GB");
}
}
Console.ReadLine();
文件監測
public class Program
{
private static FileSystemWatcher s_watcher;
public static void WatchFiles(string path, string filter)
{
s_watcher = new FileSystemWatcher(path, filter) { IncludeSubdirectories = true };
s_watcher.Created += OnFileChanged;
s_watcher.Changed += OnFileChanged;
s_watcher.Deleted += OnFileChanged;
s_watcher.Renamed += OnFileRenamed;
s_watcher.EnableRaisingEvents = true;
Console.WriteLine("Watching File changes ....");
}
private static void OnFileRenamed(object sender, RenamedEventArgs e)
{
Console.WriteLine($"file {e.OldName} to {e.Name}");
}
private static void OnFileChanged(object sender, FileSystemEventArgs e)
{
Console.WriteLine($"file {e.Name} {e.ChangeType}");
}
public static void Main()
{
WatchFiles(@"C:\Users\PC\Desktop\新建文件夾 (2)","*.*");
Console.ReadLine();
}
}
在使用 FileSystemWatcher 監視文件系統時,EnableRaisingEvents 屬性是一個非常重要的屬性,它控制著文件系統更改事件是否被引發。
EnableRaisingEvents 屬性是一個布爾類型的屬性,用于指示 FileSystemWatcher 是否應該引發 Created、Changed、Deleted 和 Renamed 事件。如果將該屬性設置為 true,則 FileSystemWatcher 將引發這些事件;如果將其設置為 false,則 FileSystemWatcher 將不會引發這些事件。
當創建一個新的 FileSystemWatcher 對象時,默認情況下,EnableRaisingEvents 屬性為 false。這意味著,如果我們不顯式地將其設置為 true,則 FileSystemWatcher 將不會引發任何事件。在實際使用中,我們通常需要將其設置為 true,以便監視文件系統更改并在相應的事件發生時執行必要的操作。
需要注意的是,啟用 EnableRaisingEvents 屬性會導致 FileSystemWatcher 對象在后臺運行,并持續監視文件系統的更改。因此,如果我們不再需要監視文件系統更改,則應該將其設置為 false,以釋放資源并停止監視。此外,在啟用 EnableRaisingEvents 屬性時,還需要注意保護代碼不受多個事件同時觸發的影響,這可能導致競態條件和其他問題。
將EnableRaisingEvents改為false后,發現確實停止了文件系統的監聽,對文件的各種操作,并不會觸發相應的響應。
創建臨時文件
在 C# 中,Path 類提供了許多用于處理路徑的實用方法。其中,GetTempPath、GetTempFileName 和 GetRandomFileName 是三個與臨時文件和目錄有關的方法。
Path.GetTempPath
Path.GetTempPath 方法返回當前系統上的默認臨時文件夾的路徑。這個路徑通常是系統環境變量 %TEMP% 或 %TMP% 所指向的文件夾。在 Windows 操作系統中,臨時文件夾通常是 C:\Users\AppData\Local\Temp。
Path.GetTempFileName 方法在默認臨時文件夾中創建一個唯一的臨時文件,并返回其完全限定路徑。該方法將隨機生成一個文件名,并在文件名的末尾添加 .tmp 擴展名。如果創建的文件已經存在,該方法將覆蓋它并創建一個新的唯一的文件。
Path.GetRandomFileName 方法返回一個隨機的文件名,不包括文件路徑。文件名是由兩個隨機生成的 GUID 組成,中間使用一個連字符連接。該方法生成的文件名是唯一的,適用于在文件名中不需要路徑的情況。
string tempPath = Path.GetTempPath();
Console.WriteLine(tempPath);
string tempFileName = Path.GetTempFileName();
Console.WriteLine(tempFileName);
string randomFileName = Path.GetRandomFileName();
Console.WriteLine(randomFileName);
Console.ReadLine();
Path.GetRandomFileName() 方法返回的隨機文件名只包括文件名部分,不包括路徑,因此需要我們自己指定一個路徑來存儲該文件。通常情況下,我們會將隨機文件存儲在默認的臨時文件夾中,即可以通過 Path.GetTempPath() 方法獲取的路徑。以下示例展示了如何使用 Path.GetRandomFileName() 和 Path.Combine() 方法創建一個隨機文件并將其存儲在臨時文件夾中
總結
- 上一篇: Web前端入门第 57 问:JavaSc
- 下一篇: CsvHelper简单使用