2016-09-12 144 views
0

我發現字符串的大小和文件的大小之間有一個奇怪的大小差異,爲什麼是這樣以及如何解決這個問題?文件大小和字符串的大小差異,爲什麼?

這是我如何得到字符串的大小:

int bytesInStr = Encoding.Unicode.GetByteCount(str); 

起初我想創造一些大小的文件。所以在我的循環計算我所有書面串的總大小:

totalSize+=bytesInStr 

但該文件的大小約爲兩倍少。

+1

您應該創建一個[mcve],爲什麼這也是一個問題?..爲什麼文件大小很重要? – Sayse

+1

文本文件的大小是用於表示爲該文件選擇的編碼中的文本的字節數。每個字符的「Unicode」是16位。 –

+0

@ LasseV.Karlsen是否考慮了字節順序標記(BOM)? –

回答

2

您的文件使用與您使用的編碼不同的編碼來獲取字符串的字節數。您需要使用相同的(例如Encoding.Unicode)。

1

Luaan說的完全正確,但即使您匹配編碼,也會有細微差別。首先是因爲流中沒有讀取文件摘要和屬性,其次,可能是因爲文件系統,導致分段或壓縮。很明顯,如果打開文件的屬性窗口,磁盤大小和原始大小不同。爲什麼?那麼需要比我的知識更多。 希望它有幫助。