2 つの文字列のサイズを比較するアプリを作成しています。サイズとは、ディスクに直接保存した場合に占めるディスク容量を意味します。
文字列をディスクに保存してファイル情報を確認せずにC#で文字列のサイズを計算することは可能ですか(ディスクに保存する方が効率的でない限り)?
はい、簡単です:
Encoding encoding = Encoding.UTF8; // Or whatever
int size = encoding.GetByteCount(text);
これは、エンコードされた形式のバイト数であることに注意してください。ファイルシステムが圧縮などを実行している場合、使用される物理サイズを予測することははるかに困難 (または不可能) になります。
ただし、エンコーディングを選択する必要があります。ディスクに「直接」保存するようなものは実際にはありません。バイナリ表現を選択する必要があります。
データをディスクに保存すると、そのデータはクラスターで書き込まれます。ディスク サイズとファイル システムによって、クラスター サイズは異なります。
サイズが 16TB 未満の NTFS ディスクの場合、クラスタ サイズは 4K です。つまり、1 バイトの文字列は 4K のディスク領域を消費し、5000 バイトの文字列は 8K のディスク領域を消費します。
これは、さまざまな MS ファイルシステムとデフォルトのクラスター サイズのリンクです http://support.microsoft.com/kb/140365