C#でファイルサイズを取得するにはどうすればよいですか?


307

ディスク上のサイズではなく、C#を使用してファイルのサイズを取得する方法が必要です。これはどのようにして可能ですか?

現在、私はこのループを持っています

foreach (FileInfo file in downloadedMessageInfo.GetFiles())
{
    //file.Length (will this work)
}

これはサイズまたはディスク上のサイズを返しますか?


関連、ただしVB.NETの場合:VB.NETでのファイルサイズの決定
Peter Mortensen

回答:



386

入力としてすでにファイルパスがある場合、これは必要なコードです。

long length = new System.IO.FileInfo(path).Length;

1
それをtry / catchブロックで囲み、ここで説明されているようにすべての可能な例外をチェックします。SecurityException、UnauthorizedAccessException、PathTooLongException、NotSupportedExceptionおよび-ユースケースに依存-ArgumentNullExceptionおよびArgumentException
huha




4

ファイルを別のファイルシステム(FAT16、NTFS、EXT3など)に移動すると、ディスク上のサイズが異なる場合があります

他の回答者が述べたように、これはディスク上のサイズではなく、バイト単位のサイズを提供します。


0

FileInfoクラスのLengthプロパティは、ファイルのサイズを返します(ディスク上のサイズではありません)。長いバイト値ではなくフォーマットされたファイルサイズ(15 KBなど)が必要な場合は、FileInfoクラスに機能を追加するために作成したパッケージであるCSharpLibを使用できます。次に例を示します。

using CSharpLib;
FileInfo info = new FileInfo("sample.txt");
Console.WriteLine(info.FormatBytes());  // Output: 15 MB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.