我正在编写一个应用程序,我希望比较两个字符串的大小。按大小,我指的是如果它们直接保存到磁盘,它们将占用的磁盘空间。
是否可以计算C#中字符串的大小而不将其保存到磁盘并检查文件信息(除非将其保存到磁盘更有效)?
答案 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