2009-03-20 15 views
2

誰かが、(ネイティブに)特定のドライブ/フォルダ/ディレクトリの最大許容ファイルサイズを取得する方法を知っていますか? Fat16の場合と同様に〜2GB、Fat32は4GBでしたが、新しいNTFSバージョンではそれ以上のものです。Monoと根底にあるOSはもちろんですが、.Netで最大許容ファイルサイズを取得するには?

読み込み/取得できるものはありますか?基本的には

乾杯... &おかげで、私は2ギガバイトよりも大きい、単一のファイルを生成しますアプリも-know-と私は、ユーザーが対応する出力パス(複数可)を設定したときにそれをチェックしたい -J

答えて

1

これは理想的なソリューションではないかもしれないが、私はとにかく次のことを提案します:ウィキペディア上

// 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で確実に動作するというボーナスを得ています。

希望に役立ちます。

1

System.Info.DriveInfo.DriveFormatを使用してドライブのファイルシステム(NTFS、FAT、など)を取得する方法はありますか?それは、サポートされているファイルサイズの考えを少なくともあなたに与えてくれるはずです。

関連する問題