どのように最大の.NETでファイルサイズを許可取得するには?

StackOverflow https://stackoverflow.com/questions/668380

  •  21-08-2019
  •  | 
  •  

質問

誰がどのように(ネイティブ)指定されたドライブ/フォルダ/ディレクトリの最大許可されたファイルのサイズを取得する知っていますか? FAT16のためのように、それは〜2ギガバイト、FAT32はそれは私が覚えている限りでは4ギガバイトだったされ、新しいNTFSバージョンのためにそれは道その先に何か..ですだけではモノと基礎となるのOSをさせます。

私はそれが私にその上のヒントを与えるかもしれない取得/読み出すことができるものはありますか?ユーザーは、対応する出力パス(複数可)を設定した場合基本的に私は2ギガバイトよりも大きい、単一のファイルを生成しますアプリも-know-と私はそれをチェックしたい...

乾杯&おかげで、 -J

役に立ちましたか?

解決

これは理想的なソリューションではないかもしれないが、私はとにかく次のことを提案します。

// 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

Wikipediaのこののページはの最大ファイル・サイズのかなり包括的なリストが含まれています様々なファイルシステム。あなたはGetMaximumFileSize機能で確認したいファイルシステムの数に応じて、あなたは、Dictionaryオブジェクト、あるいは単純なデータファイルではなく、switchステートメントを使用したい場合があります。

さて、あなたはを(つまり、モノラル/ Linuxで運を)の直接おそらく、WindowsのAPIをWMIを使用するか、最大ファイルサイズを取得することができるが、これらのソリューションはもちろん、Windowsのみと互換性があります。しかし、私は、ルックアップテーブルを用いているにもかかわらず、この合理的に素敵な純粋な管理ソリューションを検討し、すべてのOS上で確実に作業のボーナスを持っているでしょう。

希望に役立ちます。

他のヒント

どのようにドライブのファイルシステム(NTFS、FATを、電気ショック療法。)を取得するためにSystem.Info.DriveInfo.DriveFormatを使用してはどうですか?それはあなたにサポートされるファイルサイズの少なくともいくつかのアイデアを与えるべきです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top