web-dev-qa-db-ja.com

実際のファイルサイズは?

Windows XPでは、File Propertiesの下の実際のファイルサイズはどれくらいですか?サイズまたはディスク上のサイズ?

exactファイルのサイズ(バイト単位)を探しています。 WindowsがディスクをSize Windows takes to store this fileと呼ぶのではなく、ディスク上の余分なスペースの使用を非難するのはなぜですか?

6
Robinicks

これがWindows固有の問題だとは思わない。ディスクはブロック単位で割り当てられるため、ファイルサイズがディスクのブロックサイズの正確な複数でない場合、ファイルは実際のサイズよりも多くのスペースをディスク上で占有する可能性があります。

考えてみましょう:

File         |------3.4k------|   |-------------4.1k--------| 
Disk Blocks  |--------4k----------|--------4k----------|--------4k----------|

ディスク上のファイルは、割り当てられたブロックに揃える必要があります(ブロックの開始位置から開始する必要があります)。たとえば、ファイルの実際のサイズが3.4kで、ディスクのブロックサイズが4kの場合、ディスク上のファイルのサイズは4kになります。ファイルには3.4kのデータしかありませんが、そのブロックの残りの部分を何にも使用できないため、ディスク上で実質的に4kを占めています。

17
Jeremy

サイズは、ファイル内の実際のバイト数です。

ディスク上のサイズは、ファイルがディスク上で占めるバイト数です。ディスクスペースはブロック単位でしか割り当てることができないため、これは通常、より大きな数値です。したがって、ファイルの最後のディスクに、最後のブロックを埋めるために余分なスラックスペースが予約されます。ただし、このスラックスペースは実際にはファイルの一部ではありません。

18

ディスク上のスペースを浪費することについてWindowsを炎上させる前に、すべてのファイルシステムがハードディスク上のスペースをどの程度管理しているかについて少し理解する必要があります。

HDD上の「最小の」アドレス可能なスペースの塊はセクター(多くの場合512バイト)であり、それよりも小さい読み取りまたは書き込みはできません。セクターに1バイトを書き込みたい場合は、セクターを読み取り、バイトを変更して、セクターを書き戻す必要があります。それが物理学/電子工学の仕組みです。 「ブロック」は通常、1つ以上のセクターであり、ファイルシステムがファイルに割り当てるスペースの最小チャンクを表します。古いDOSの「FATベース」ファイルシステムは、ディスクサイズが大きくなるにつれてブロックサイズが大きくなりました。

多くの理由で、ファイルシステムは同じセクターを共有する複数のファイルを持たないことを好みます。ファイルをもう少し長くしたい場合を想像してみてください。ファイルを大きくするために追加のセクターが割り当てられる前に、セクターの最後にある「無駄なスペース」を使用できます。

また、理論的には、ディスクファイルをバイトごと(またはビットごと)に割り当てることができるファイルシステムを使用することは可能ですが、これを追跡するためのディスク上のハウスキーピングストレージの量は急増し、おそらく利点を上回ります。獲得した。そして、パフォーマンスはおそらく非常に悪いでしょう...

10
Roddy

Windowsは、より大きな単位(1KB = 1,024Bなど)で表示する場合、常にファイルサイズを正しく計算します。

サイズは実際のファイルサイズであり、ディスク上のサイズはハードドライブで取得された実際のサイズです。ハードドライブはブロックに分割されているため、ブロックを完全に消費する必要があります。私は4Lを保持するバケツを持っているようなものであり、あなたは5Lの水を持っています、あなたは水を保持するために2つのバケツが必要になるでしょう。

6
Samuel

サイズ。ディスク上のサイズは、ファイルをドライブに保存するために必要なブロック数*ブロックサイズです。

5
DMKing

ディスク上のサイズは、ディスクがブロックに分割されているため、4kbブロックを使用するディスクは4kのディスク上のサイズを報告するという事実を指します。

1文字のテキストファイルを作成しましたが、ファイルのサイズが1バイトであると正しく報告されます。ディスク上のサイズは4kです。これは、ファイルが使用できるディスク上の最小スペースだからです。

4
Jeff Martin

うーん、「本物」を定義します。ファイルは常に一定数のブロックを占有します。 Windowsファイルシステムのブロックサイズを忘れていますが(私は約10年間Windowsを真剣に使用していません)、DIRからブロック数を取得できると確信しています。最悪の場合、 Cygwinをインストールし、lsを使用します。したがって、「実際の」ファイルサイズは、その意味でブロックサイズ×ブロック数です。

または、ファイルがブロックの途中で終了する可能性があるため、「実際の」ファイルサイズは実際のバイト数である可能性があります。その場合、wc -cそれを与えるでしょう。

1
Charlie Martin

NTFSは、ディレクトリエントリに非常に小さなファイルを格納できるため、ディスク上で実質的にサイズをとらず、非常にすばやくアクセスできます。

トニー

1
Tony Lambert