3

2 つの文字列のサイズを比較するアプリを作成しています。サイズとは、ディスクに直接保存した場合に占めるディスク容量を意味します。

文字列をディスクに保存してファイル情報を確認せずにC#で文字列のサイズを計算することは可能ですか(ディスクに保存する方が効率的でない限り)?

4

2 に答える 2

8

はい、簡単です:

Encoding encoding = Encoding.UTF8; // Or whatever
int size = encoding.GetByteCount(text);

これは、エンコードされた形式のバイト数であることに注意してください。ファイルシステムが圧縮などを実行している場合、使用される物理サイズを予測することははるかに困難 (または不可能) になります。

ただし、エンコーディングを選択する必要があります。ディスクに「直接」保存するようなものは実際にはありません。バイナリ表現を選択する必要があります。

于 2010-07-20T19:55:04.483 に答える
2

データをディスクに保存すると、そのデータはクラスターで書き込まれます。ディスク サイズとファイル システムによって、クラスター サイズは異なります。

サイズが 16TB 未満の NTFS ディスクの場合、クラスタ サイズは 4K です。つまり、1 バイトの文字列は 4K のディスク領域を消費し、5000 バイトの文字列は 8K のディスク領域を消費します。

これは、さまざまな MS ファイルシステムとデフォルトのクラスター サイズのリンクです http://support.microsoft.com/kb/140365

于 2010-07-20T20:09:33.577 に答える