2017-05-11 14 views
-3

Windowsエクスプローラなどのファイル管理ソフトウェアでファイルのサイズを調べると、のサイズがで、もう1つはというサイズのディスクが表示されます。ディスクのサイズはです。ファイルのサイズがディスク上で異なるのはなぜですか?

enter image description here

  1. なぜ異なるこれら二つは何ですか?

    ディスク上のサイズに、ファイルアロケーションテーブル(FAT)のエントリなどのオーバーヘッドが含まれていますか?あなたは詳細を教えていただけますか?

  2. プログラムでファイルのサイズを照会すると、常にディスクサイズに依存しないサイズが返されます。この番号はどこから得られますか? OSはファイル全体の内容を読んでこのサイズを判断するか、ファイルアロケーションテーブルを調べるだけですか?

+4

可能な重複:https://superuser.com/q/66825/302 –

+3

質問にはコードが含まれていますが、プログラミングの代わりにコンピュータのトピックが本質的です。したがって、代わりに[SuperUser](https://superuser.com/)に適しています。 – Abion47

+0

ありがとうございます。私はスーパーユーザーの答えを読んで、私の好奇心のポイント(1)を満たしています。誰かがパート(2)に答えるかもしれないので、この質問をそのまま残してください。 –

答えて

3

が見つかりました。thisがスーパーユーザで見つかりました。 彼の言うこと:

ディスクはトラックとセクタで構成されています。 Windowsでは、OSが「クラスタ」または「アロケーションユニット」内のファイルの領域を割り当てます。

クラスタのサイズはさまざまですが、一般的な範囲は512バイトから32 KB以上です。たとえば、私のC:\ドライブでは、割り当て単位は4096バイトです。つまり、Windowsは1〜4096バイトのファイルまたはファイル部分に4096バイトを割り当てます。

ファイルが17KB(キロバイト)の場合、ディスク上のサイズは20.48KB(または20480バイト)になります。計算は4096(1アロケーションユニット)×5 = 20480バイトとなります。 17KBのファイルを保持するには5つのアロケーションユニットが必要です。

もう1つの例は、サイズが2000バイトのファイルがある場合です。ディスク上のファイルサイズは4096バイトです。その理由は、ファイル全体が1つのアロケーションユニット内に収まる場合でも、1つのアロケーションユニットしか使用できず、他のファイルと共有することができないため、ディスク上に4096(1つのアロケーションユニット)しか必要としないからです。

したがって、ディスク上のサイズは、ファイルが保存されるすべてのセクタの領域です。つまり、通常、ディスク上のサイズは常に実際のサイズよりも大きくなります。

したがって、ファイルまたはフォルダの実際のサイズは、プロパティウィンドウを表示するときに常にSize値から取得する必要があります。

関連する問題