我有一個應用程序逐行讀取一個巨大的文本文件(大約超過100MB)。通過閱讀它的行來確定文件的大小
由於應用程序需要花費很多時間來讀取文件,我想在其底部添加一個StatusStripProgressBar,指示在加載結束之前還剩多少時間。
我試圖比較文件長度與正在讀取的字符串的長度,但我沒有得到相同的結果。我也試圖將字符串轉換爲字節,但它仍然有所不同,例如:
while (!sr.EndOfStream)
{
s = sr.ReadLine;
TotalStringSize += s.Length;
UTF8ToASCII += UTF8Encoding.ASCII.GetByteCount(s);
UTF8ToBigEndianUnicode += UTF8Encoding.BigEndianUnicode.GetByteCount(s);
UTF8ToDefault += UTF8Encoding.Default.GetByteCount(s);
UTF8ToUnicode += UTF8Encoding.Unicode.GetByteCount(s);
UTF8ToUTF32 += UTF8Encoding.UTF32.GetByteCount(s);
UTF8ToUTF7 += UTF8Encoding.UTF7.GetByteCount(s);
UTF7ToASCII = UTF7Encoding.ASCII.GetByteCount(s);
//
// ...
//
}
我得到的結果要麼是比System.IO.FileStream.Length
給出的結果更高或更低。 有什麼想法?
編輯:使用的框架是.NET 2.0
Unicode字符存儲在2個字節中,而普通字符只存儲在一個字節中。這一切都取決於你的文件的編碼類型 – GETah
與sr.Length相比,使用sr.Position來顯示進度不是可能嗎? –
加載時是否需要顯示文件的(已經加載的)內容? – stombeur