在写入文件之前和写入文件之后的KB之间的差异

时间:2014-09-18 16:02:59

标签: c# string

我目前正在处理一个字符串List<string> datavalue列表,其中包含分隔值,我尝试使用此函数int strlen = Encoding.UTF8.GetByteCount(datavalues.ToString());计算KB,我在Strlen中得到的值为48变量。将string的datavalue列表写入文本文件后,生成的文件大小为2430 kb。当你有一个字符串列表的大小和你写它时有多大差异?之后是否添加了一些字符会使输出文件变大?

3 个答案:

答案 0 :(得分:5)

调用List<String>时,datavalues(您的变量ToString)将输出以下内容:

  

System.Collections.Generic.List [String](或类似的东西)

大约48个字节长。不包括字符串的实际内容。要获得全长,您需要执行以下操作:

String.Join("", dataValues.ToArray()).Length;

答案 1 :(得分:1)

datavalues.ToString是列表本身的字符串表示形式。如果你想要列表中所有字符串的大小,你可以这样做:

var len = datavalues.Sum(l => Encoding.UTF8.GetByteCount(l));

答案 2 :(得分:1)

这非常不准确。以下会更好

long size = 0;
object o = new object();
using (Stream s = new MemoryStream()) {
    BinaryFormatter formatter = new BinaryFormatter();
    formatter.Serialize(s, o);
    size = s.Length;
}

另请注意,我的光盘分配大小为4096字节。

enter image description here

文件只能分配 file_content_size&lt; = n * allocation_size 的空间。

另请注意,在UTF8中,某些字符存储为 1字节,其他字符存储 6字节