我不明白我從下面的代碼被黑客竊取的結果,有人可以解釋。只有在讀取UNICODE編碼文本文件時纔會發生。FileStream Seek/ReadByte似乎扭轉了文件的字節順序
fs = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
// read from start
byte[] lne = new byte[100];
int actual = fs.Read(lne, 0, lne.Length);
string line = Encoding.Unicode.GetString(lne, 0, actual); // ok readable stuff as expected
string line1 = Encoding.BigEndianUnicode.GetString(lne, 0, actual); // fail as expected
// move down into the file
fs.Seek(-150, SeekOrigin.End);
fs.ReadByte(); // take this out, works ok!
lne = new byte[100];
actual = fs.Read(lne, 0, lne.Length);
line = encoding.GetString(lne, 0, actual); // fail non readable stuff - NOT EXPECTED
line1 = Encoding.BigEndianUnicode.GetString(lne, 0, actual); // SUCCESS, readable - huh!
很明顯,代碼不是「真實世界」,它只是我真正的代碼正在做什麼的細分。
在第一個Encoding.Unicode.GetString之後,我可以在變量'line'中看到好的可讀數據,並且'line1'中的數據如預期的那樣糟糕。
第二個Encoding.Unicode.GetString後我看到完整的廢話(japenese /中文我不知道),但line1現在包含來自該文件的可讀數據。
如果我拿出ReadByte,一切都按預期工作。
任何任何想法,爲什麼發生這種情況。
TIA。
考慮使用[StreamReader](http://msdn.microsoft.com/en-us/library/system.io.streamreader.aspx) –