我目前正在研究一個字符串爲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. 在寫入文件之前壓縮XML
- 2. 在刪除之前寫入文件名
- 3. 在寫入之後從文件中讀取,關閉之前
- 4. 在寫入文件之前處理變量中的文本
- 5. fuse:如何在寫入之前獲取要寫入的文件的大小?
- 6. Perl - 在寫入文件之前格式化文本數據
- 7. 如何在寫入文件之前整理.Net XmlDocument文本?
- 8. C# - 隨機寫入文件 - 在第一行之前寫入第二行
- 9. 在寫入文件之前替換Python中的字符
- 10. 在寫入數據之前獲取BufferedImage的文件大小
- 11. 如何在寫入之前獲得更改文件的通知?
- 12. 寫入文件和\?
- 13. 寫入文件和
- 14. 在寫入文件後打開文件
- 15. Node.js:在寫入之前檢查文件存在
- 16. 通過文件寫入文件寫入會給出AccessDeniedException異常
- 17. JSON.net異步寫入文件
- 18. 寫入文件異常?
- 19. 異步寫入文件
- 20. 在阿拉伯語和英語之間寫入文本文件
- 21. 寫入當前文件
- 22. 寫入文件前綴
- 23. PHP:寫入當前文件
- 24. 寫入緩衝區之前寫入文件,以避免被鎖定
- 25. 在第一列之後寫入csv文件的第二列
- 26. 編寫#import <filename.h>和#import「filename.h」之間的差異,即將文件名寫入尖括號和引號中?
- 27. 在寫入之前強制關閉excel文件
- 28. 在調用close之前將字符串寫入文件()
- 29. 在寫入到txt文件之前編輯netcat輸出
- 30. 在寫入之前格式化csv文件
我相信這是這個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