日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > C# >内容正文

C#

C# 文件系统

發(fā)布時(shí)間:2025/5/22 C# 57 如意码农
生活随笔 收集整理的這篇文章主要介紹了 C# 文件系统 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

檢查驅(qū)動器信息

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();



文件監(jiān)測


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 監(jiān)視文件系統(tǒng)時(shí),EnableRaisingEvents 屬性是一個(gè)非常重要的屬性,它控制著文件系統(tǒng)更改事件是否被引發(fā)。

EnableRaisingEvents 屬性是一個(gè)布爾類型的屬性,用于指示 FileSystemWatcher 是否應(yīng)該引發(fā) Created、Changed、Deleted 和 Renamed 事件。如果將該屬性設(shè)置為 true,則 FileSystemWatcher 將引發(fā)這些事件;如果將其設(shè)置為 false,則 FileSystemWatcher 將不會引發(fā)這些事件。

當(dāng)創(chuàng)建一個(gè)新的 FileSystemWatcher 對象時(shí),默認(rèn)情況下,EnableRaisingEvents 屬性為 false。這意味著,如果我們不顯式地將其設(shè)置為 true,則 FileSystemWatcher 將不會引發(fā)任何事件。在實(shí)際使用中,我們通常需要將其設(shè)置為 true,以便監(jiān)視文件系統(tǒng)更改并在相應(yīng)的事件發(fā)生時(shí)執(zhí)行必要的操作。

需要注意的是,啟用 EnableRaisingEvents 屬性會導(dǎo)致 FileSystemWatcher 對象在后臺運(yùn)行,并持續(xù)監(jiān)視文件系統(tǒng)的更改。因此,如果我們不再需要監(jiān)視文件系統(tǒng)更改,則應(yīng)該將其設(shè)置為 false,以釋放資源并停止監(jiān)視。此外,在啟用 EnableRaisingEvents 屬性時(shí),還需要注意保護(hù)代碼不受多個(gè)事件同時(shí)觸發(fā)的影響,這可能導(dǎo)致競態(tài)條件和其他問題。

將EnableRaisingEvents改為false后,發(fā)現(xiàn)確實(shí)停止了文件系統(tǒng)的監(jiān)聽,對文件的各種操作,并不會觸發(fā)相應(yīng)的響應(yīng)。

創(chuàng)建臨時(shí)文件

在 C# 中,Path 類提供了許多用于處理路徑的實(shí)用方法。其中,GetTempPath、GetTempFileName 和 GetRandomFileName 是三個(gè)與臨時(shí)文件和目錄有關(guān)的方法。

Path.GetTempPath

Path.GetTempPath 方法返回當(dāng)前系統(tǒng)上的默認(rèn)臨時(shí)文件夾的路徑。這個(gè)路徑通常是系統(tǒng)環(huán)境變量 %TEMP% 或 %TMP% 所指向的文件夾。在 Windows 操作系統(tǒng)中,臨時(shí)文件夾通常是 C:\Users\AppData\Local\Temp。

Path.GetTempFileName 方法在默認(rèn)臨時(shí)文件夾中創(chuàng)建一個(gè)唯一的臨時(shí)文件,并返回其完全限定路徑。該方法將隨機(jī)生成一個(gè)文件名,并在文件名的末尾添加 .tmp 擴(kuò)展名。如果創(chuàng)建的文件已經(jīng)存在,該方法將覆蓋它并創(chuàng)建一個(gè)新的唯一的文件。

Path.GetRandomFileName 方法返回一個(gè)隨機(jī)的文件名,不包括文件路徑。文件名是由兩個(gè)隨機(jī)生成的 GUID 組成,中間使用一個(gè)連字符連接。該方法生成的文件名是唯一的,適用于在文件名中不需要路徑的情況。

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() 方法返回的隨機(jī)文件名只包括文件名部分,不包括路徑,因此需要我們自己指定一個(gè)路徑來存儲該文件。通常情況下,我們會將隨機(jī)文件存儲在默認(rèn)的臨時(shí)文件夾中,即可以通過 Path.GetTempPath() 方法獲取的路徑。以下示例展示了如何使用 Path.GetRandomFileName() 和 Path.Combine() 方法創(chuàng)建一個(gè)隨機(jī)文件并將其存儲在臨時(shí)文件夾中

總結(jié)

以上是生活随笔為你收集整理的C# 文件系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。