我目前正在处理一个字符串List<string>
datavalue列表,其中包含分隔值,我尝试使用此函数int strlen = Encoding.UTF8.GetByteCount(datavalues.ToString());
计算KB,我在Strlen中得到的值为48变量。将string的datavalue列表写入文本文件后,生成的文件大小为2430 kb。当你有一个字符串列表的大小和你写它时有多大差异?之后是否添加了一些字符会使输出文件变大?
答案 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字节。
文件只能分配 file_content_size&lt; = n * allocation_size 的空间。
另请注意,在UTF8中,某些字符存储为 1字节,其他字符存储 6字节!