(私はWindowsを使用していますXPですが、最近のすべてのバージョンのWindowsでも同じだと思います。)
たとえば、新しいemptyテキストドキュメントを作成すると、そのプロパティでサイズが0バイトであることがわかります。 0バイトは情報なしを意味します。データなし。
それでも、ファイルには名前があり、最終アクセス、変更、作成の日付を保持できます。隠しファイルかどうか、読み取り専用かどうかなどの情報が含まれています...
すべてのメタデータはどこに保存されていますか?
ハードディスクにはファイルが含まれていると教えられましたが、それだけではありません。実際には、ハードドライブには、多くのシングルビットで表現される非常に大きな数字が1つ含まれています。しかし、この解釈はあなたにとってもあなたのコンピュータにとっても意味がありません。単一の大きな数を処理することはあまり一般的ではないからです(そして私は本当に巨大な数について話しているのです)。代わりに、コンピューターはそれをより小さな「ワード」(8ビット、16ビット、32ビットなど)に分割し、そのように使用します。それでも、それは単なる単語の束です(8ビットの単語、つまりバイトを想定しましょう)。
これで、そのドライブはパーティション化されました。 この答え でパーティショニングが良いアイデアである理由を説明しました:
一般的に言って、ドライブはパーティショニングなしで使用できます。ほとんどのペンドライブはそのように動作します。ただし、パーティションの使用には多くの利点があります。
- 2つのOSを同じハードドライブに配置して、互いに干渉しないようにすることができます。それぞれがそのパーティションを論理ドライブとして扱い、指示しない限り他のものと干渉しません。
- データを論理的に分離できます。何らかの理由で1つのパーティションが破損した場合、他のパーティションはそのままの状態に保たれます。
- パーティションを使用する方が、複数の小さなハードドライブを使用するよりも優れています。これは、システムがより静かになり、エネルギー消費が少なくなり、サイズ変更、削除、移動などができるためです。
- ハードドライブの一部を特別な目的に使用できます。
現在、各パーティションには独自のファイルシステムがあります。 Windowsの最新バージョンは[〜#〜] ntfs [〜#〜]を使用しますが、[〜#〜] fat [〜#〜]、FAT32およびexFATは、外部メディアまたはレガシーパーティションでサポートされます。日常的に使用するLinuxのインストールでは、通常extファイルシステムが使用され、ext4が最新のものです。
ファイルシステムは、ファイルがディスク上に物理的に配置される方法を定義します。次のように考えることができます。章、ページ番号、または改行のない10000ページの本がある場合、その使用は非常に困難です。もちろん、ページ番号と章のタイトルはページの一部を占めますが、それらを使用すると、本をより簡単かつ迅速に使用できます。チャプターにジャンプしたい場合は、たとえば、42と入力します。目次でそれを検索するだけです。次に、必要な章が見つかるまで本を読み進めます。あなたのファイルは章であり、あなたのファイルシステムは本です。ファイル境界、ファイル名などのファイルシステムメタデータもスペースを占有しますが、これは比較的少量のスペースであり、処理速度を大幅に向上させます。
「章」が空の場合でも、見出しやページ番号が表示されることがありますよね?空のファイルには0バイトのデータが含まれています。メタデータはスペースを占有しますが、それはファイルの一部ではなく、ファイルシステムの一部です。そうしないと、テキストファイル内にファイル名が表示されますか?
ちなみに、それが初期のバージョンのDOSが8.3の名前しか受け入れなかった理由です。ファイル名用に予約されているスペースは非常に限られていたのです。 NTFSは、255文字の長さのファイル名を許可します[1]。
コメントにもう1つWordを追加します。
以前は、PC内のいくつかのファイルを何らかの方法で破損させて、サイズが約100GBに見えるようなウイルスを使用していました。それらのそれぞれ。私の40 GBのハードディスク。だから何らかの魔法があったに違いない... :-D
sparse files と呼ばれる機能のおかげで、validファイルをハードドライブより大きくすることは完全に可能です。 Hennesは この質問 に関するコメントでこれらの優れた説明をしています:
100ページを保持できるバインダーを想像してみてください。そのバインダーを通常のファイルとして使用する場合、100ページを挿入できます。 100をすべて読み取ることができます。100に書き込むことができます。次に、疎なバインダーを想像してみてください。 「ページ1:コンテンツA」と書いた最初のページを挿入します。次に、「page 9999:content b:」と書いた2番目のページを挿入します。ページを読み込もうとするたびに、ページが存在するかどうかを確認します。そうでない場合、あなたの答えはこれは空のページです。存在する場合は、ページのコンテンツを返します。バインダーにまだ存在しないページに書き込むたびに、新しい用紙を追加します。
今日、Windows代替データストリーム(ADS)について学びました。これは、ファイルに添付される非表示のリソースフォークです。 Windows NT 3.1以降、NTFSの一部となっています。
たとえば、空のテキストファイルがあり、ファイルのプロパティタグにいくつかの概要情報を入力すると、非表示のADSファイルが作成され、テキストファイルに添付されます。 Windowsのほとんどのバージョンでは、元のファイルのサイズを報告するときにADSファイルのサイズは含まれません。
コマンドプロンプトからADSファイルを作成および表示できます。
echo "ABCDE" > test.txt:hidden.txt
hidden.txtと呼ばれるADSファイルを含むtest.txtファイルを作成します
このコマンドを使用してファイルを編集できます。
notepad test.txt:hidden.txt
こちら より詳細に説明された読みやすい記事。
検索を行ったところ、Stack Overflowで同様の質問がありました。
これは基本的に、ファイルが作成され、数バイトまたはハードドライブのクラスターなどを占有することを示しています。これは、ハードドライブやファイルシステムの粒度などに依存します。
彼らはここでそれについて議論します: https://stackoverflow.com/questions/4954991/are-0-bytes-files-really-0-bytes
さらなる研究のための追加リンク付き。
NTFSボリュームでは、この情報はメタファイルに保存されます。特に、ファイル名とタイムスタンプは$ MFTと呼ばれるメタファイルに保存されます。メタファイルは、エクスプローラやコマンドプロンプトなどの通常のWindowsメソッドではアクセスできません。
詳細については: