3

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

是否可以在不将其保存到磁盘并检查文件信息的情况下在 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 回答