我正在编写一个应用程序,我想比较两个字符串的大小。按大小,我的意思是如果将它们直接保存到磁盘,它们将占用的磁盘空间。
是否可以在不将其保存到磁盘并检查文件信息的情况下在 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