Dot-Net

如何確定文件系統在 .net 中是否區分大小寫?

  • June 26, 2019

.net 是否有辦法確定本地文件系統是否區分大小寫?

您可以在臨時文件夾中創建一個文件(使用小寫文件名),然後檢查該文件是否存在(使用大寫文件名),例如:

string file = Path.GetTempPath() + Guid.NewGuid().ToString().ToLower();
File.CreateText(file).Close();
bool isCaseInsensitive = File.Exists(file.ToUpper());
File.Delete(file);

請記住,您可能有多個具有不同大小寫規則的文件系統。例如,根文件系統可能區分大小寫,但您可以將不區分大小寫的文件系統(例如,帶有 FAT 文件系統的 U 盤)安裝在某處。因此,如果您進行此類檢查,請確保將它們放在您要訪問的目錄中。

此外,如果使用者將數據從區分大小寫的文件系統複製到不區分大小寫的文件系統怎麼辦?如果您的文件僅按大小寫不同,其中一個會覆蓋另一個,從而導致數據失去。在另一個方向複製時,您也可能會遇到問題,例如,如果文件 A 包含對文件“b”的引用,但文件實際上名為“B”。這適用於原始不區分大小寫的文件系統,但不適用於區分大小寫的系統。

因此,如果可以,我建議您避免取決於文件​​系統是否區分大小寫。不要生成僅大小寫不同的文件名,使用標准文件選擇器對話框,準備好大小寫可能會改變等。

引用自:https://stackoverflow.com/questions/430256