A Stream
具有long
特性Position
和Length
。您可以將Position
設置爲[0, Length[
範圍內的任意值,如fileStream.Position = fileStream.Length - 45;
。
或者,您可以使用Stream.Seek
函數:fileStream.Seek(-45, SeekOrigin.End)
。
根據周圍的代碼和情況,使用可讀性更強的文檔,這是最能表達您意圖的文字。
下面是一些代碼:
using (var fileStream = File.OpenRead("myfile.txt"))
using (var streamReader = new StreamReader(fileStream, Encoding.ASCII))
{
if (fileStream.Length >= 45)
fileStream.Seek(-45, SeekOrigin.End);
var value = streamReader.ReadToEnd(); // Last 45 chars;
}
這是容易,因爲你知道你的文件在ASCII編碼。否則,您必須從讀取文件的開頭讀取一些文本,讓其檢測編碼(如果存在BOM),然後才能找到您想要讀取的位置。
去oldschool? FOPEN/FSEEK? – 2014-08-29 19:36:50
['FileStream.Seek(long offset,SeekOrigin origin)'](http://msdn.microsoft.com/en-us/library/system.io.filestream.seek(v = vs.110).aspx)? Darin Dimitrov顯示了一個示例如何執行此操作:http://stackoverflow.com/questions/4368857/read-from-a-file-starting-at-the-end-similar-to-tail – birryree 2014-08-29 19:37:23
什麼編碼是文本文件在?如果是UTF-8,你能保證文件中只有單字節寬字符嗎? – 2014-08-29 19:40:39