これは理想的なソリューションではないかもしれないが、私はとにかく次のことを提案します:ウィキペディア上
// Returns the maximum file size in bytes on the filesystem type of the specified drive.
long GetMaximumFileSize(string drive)
{
var driveInfo = new System.IO.DriveInfo(drive)
switch(driveInfo.DriveFormat)
{
case "FAT16":
return 1000; // replace with actual limit
case "FAT32":
return 1000; // replace with actual limit
case "NTFS":
return 1000; // replace with actual limit
}
}
// Examples:
var maxFileSize1 = GetMaximumFileSize("C"); // for the C drive
var maxFileSize2 = GetMaximumFileSize(absolutePath.Substring(0, 1)); // for whichever drive the given absolute path refers to
Thisページには、さまざまなファイルシステムの最大ファイル・サイズのかなり包括的なリストが含まれています。 GetMaximumFileSize
関数でチェックインするファイルシステムの数に応じて、switch文ではなく、Dictionaryオブジェクトまたは単純なデータファイルを使用することができます。
ここでは、最大ファイルサイズをWMIまたはWindows APIを使用して直接取得することができますが、これらのソリューションはWindowsと互換性があります(つまり、Mono/Linuxでは不運です)。しかし、ルックアップテーブルの使用にもかかわらず、これを合理的に優れた純粋に管理されたソリューションとみなし、すべてのOSで確実に動作するというボーナスを得ています。
希望に役立ちます。