2010-01-22 42 views
3

我需要檢索文件的最後一個字符。它可能是換行符,或許多特殊字符之一。我可以在不解析整個文件的情況下檢索這個字符嗎?或者有沒有一種方法可以將整個文件讀入字符串而不用擔心換行符?有沒有辦法在不逐行讀取文件的情況下檢索文件的最後一個字符?

我基本上需要根據文件的最後一個字符拆分文件的內容。所以如果它是一個換行符,我會按'\ n'分割字符串。

回答

4
string s = File.ReadAllText("test.txt"); 
string[] split = s.Split(s[s.Length - 1]); 
+0

這將保持最後一個splitchar也在整個文本中...您需要首先刪除它,在分裂之前! – Toad 2010-01-22 15:03:49

+0

我不介意最後一個字符是否保留在文本中。這將是有效的EDI格式。 – Brandon 2010-01-22 15:04:45

+0

@brandon:在這種情況下,這個例子是正確的 – Toad 2010-01-22 15:06:31

0

StreamReader有ReadToEnd()方法。它將整個文件讀入一個字符串。

+0

這是不是一個時間和內存的方式來獲得最後一個字符? – 2010-01-22 15:09:45

+0

@帕斯卡爾:你可能想重讀這個問題。 OP必須擁有文件的全部內容,而不管最後一個字符,所以這將是更有效的路線。 – 2010-01-22 15:38:58

+0

對,我過分關注「沒有解析整個文件」部分。儘管如此,在最後,然後再從頭開始,可以處理不適合內存的文件。 – 2010-01-22 16:47:58

7

您可以搜索()到文件末尾-1,然後只需Read()一個字節。

我現在沒有確切的函數名和常量,請查看Stream文檔。

+2

1個字節可能不等於1個字符。它可能取決於文件編碼。 – 2010-01-22 15:06:25

+0

System.IO.Stream.Seek(-1,System.IO.SeekOrigin.End).ReadByte() – TJMonk15 2010-01-22 15:06:37

+1

如果他將要讀取整個文件,那麼真的不需要操作流。 – 2010-01-22 15:08:07

相關問題