我目前正在研究一个字符串为List<string>
的数据值列表,里面保存着分隔值,我试图使用此函数为KB计算int strlen = Encoding.UTF8.GetByteCount(datavalues.ToString());
,我是在我的Strlen变量中获得48的值。在将字符串的datavalue列表写入文本文件后,生成的文件的大小为2430 kb。当你有一个字符串列表的大小和写入时间的差别有多大?是否有一些字符被添加后使输出文件变大?在写入文件之前和写入文件之后的差异
1
A
回答
5
一个List<String>
(这是你的变量datavalues
是什么)将输出以下时ToString
被称为:
System.Collections.Generic.List [字符串](或类似的东西)
它大约有48个字节长。不包括字符串的实际内容。要获得完整的长度,你需要做的是这样的:
String.Join("", dataValues.ToArray()).Length;
1
datavalues.ToString
是列表本身的字符串表示。如果你想要列表中所有字符串的大小,你可以这样做:
var len = datavalues.Sum(l => Encoding.UTF8.GetByteCount(l));
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 < = N * allocation_size。
还要注意的是,在某些UTF8字符存储与1字节和其他人6个字节!
相关问题
- 1. 在删除之前写入文件名
- 2. 在写入文件之前处理变量中的文本
- 3. fuse:如何在写入之前获取要写入的文件的大小?
- 4. C# - 随机写入文件 - 在第一行之前写入第二行
- 5. 如何在写入之前获得更改文件的通知?
- 6. 在写入数据之前获取BufferedImage的文件大小
- 7. 写入文件和\?
- 8. Node.js:在写入之前检查文件存在
- 9. 通过文件写入文件写入会给出AccessDeniedException异常
- 10. 异步写入文件
- 11. 写入文件异常?
- 12. 写入当前文件
- 13. 写入缓冲区之前写入文件,以避免被锁定
- 14. 在第一列之后写入csv文件的第二列
- 15. 编写#import <filename.h>和#import“filename.h”之间的差异,即将文件名写入尖括号和引号中?
- 16. 在停止程序之前,文件如何写入?
- 17. 在调用close之前将字符串写入文件()
- 18. 在写入之前强制关闭excel文件
- 19. 在写入之前格式化csv文件
- 20. 在写入到txt文件之前编辑netcat输出
- 21. 在写入文件之前检查文件中是否存在字符串/字
- 22. 为什么我们需要在写入流数据之前首先将.h264文件写入.h264文件
- 23. 写入文件之前的唯一字符串 - python
- 24. 异步写入和读取文件
- 25. 解析后写入文件
- 26. 通过在写入文件之前检测系统文件夹来避免System.Runtime.InteropServices.COMException
- 27. 如何在有人试图写入文件之前读取文件?
- 28. 写入文件
- 29. 写入文件
- 30. 写入文件?
我相信这是这个http://stackoverflow.com/questions/15470787/please-help-me-understand-size-vs-size-on-disk – Mashton 2014-09-18 16:07:23
当你在列表上调用ToString时,它会给你是“System.Collections.Generic.List'1 [System.String]”,它是UTF8中的48个字节。 – 2014-09-18 16:07:59
这是该类型的名称。当然,“System.Collections.Generic.List'1 [System.String]”长48字节。与列表中的字符串的大小没有任何关系。 – 2014-09-18 16:08:31