计算字符串占用的磁盘空间而不将其保存到磁盘

时间:2010-07-20 19:52:37

标签: c# .net string filesize

我正在编写一个应用程序,我希望比较两个字符串的大小。按大小,我指的是如果它们直接保存到磁盘,它们将占用的磁盘空间。

是否可以计算C#中字符串的大小而不将其保存到磁盘并检查文件信息(除非将其保存到磁盘更有效)?

2 个答案:

答案 0 :(得分:8)

是的,这很容易:

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

请注意,这是编码形式的字节数。如果您的文件系统正在执行压缩等,则预测所采用的物理大小变得更加困难(或不可能)。

必须选择编码。实际上没有“直接”保存到磁盘这样的东西 - 你必须选择一个二进制表示。

答案 1 :(得分:2)

将数据保存到磁盘时,数据以群集形式写入,根据磁盘大小和文件系统,群集大小会有所不同。

对于小于16TB的NTFS磁盘,群集大小为4K,这意味着1字节的字符串将消耗4K磁盘空间,而5000字节的字符串将消耗8K的磁盘空间。

以下是与各种MS文件系统和默认群集大小的链接 http://support.microsoft.com/kb/140365