2011-07-27 91 views
50

我正在爲.net compact framework 2.0移動設備開發一個應用程序。我正在嘗試將文件的內容加載到字符串對象,但不知何故我無法完成。在System.IO.StreamReader類中沒有ReadToEnd()方法。是否有另一個類提供這種功能?將文件內容讀入.Net Compact Framework中的字符串

+0

請發佈您迄今爲止的代碼。 – NickHeidke

回答

96
StringBuilder sb = new StringBuilder(); 
using (StreamReader sr = new StreamReader("TestFile.txt")) 
{ 
    String line; 
    // Read and display lines from the file until the end of 
    // the file is reached. 
    while ((line = sr.ReadLine()) != null) 
    { 
     sb.AppendLine(line); 
    } 
} 
string allines = sb.ToString(); 
+0

我不知道爲什麼,但File類中沒有ReadAllText方法。錯誤:'System.IO.File'不包含'ReadAllText'的定義。任何想法爲什麼? – lng

+0

您使用的是新關鍵字嗎?創建文件的實例並使用靜態文件是兩件不同的事情。 – Jethro

+0

我正在嘗試使用靜態方法發佈。 – lng

7

File.ReadAllText(file)你在找什麼?

還有File.ReadAllLines(file),如果你更喜歡它按行分解成數組。

+0

-1:'ReadAllText'沒有在.NET Compact Framework中實現,這就是問題所在。 – JohnD

+0

確實,我猜是錯的。然而,我有點困惑,因爲根據OP,'ReadToEnd'丟失了,但它[存在於.net 2.0 compact中](http://msdn.microsoft.com/zh-cn/library/System.IO。 StreamReader_methods%28v = vs.80%29.aspx) –

41
string text = string.Empty; 
using (StreamReader streamReader = new StreamReader(filePath, Encoding.UTF8)) 
{    
    text = streamReader.ReadToEnd(); 
} 

另一種選擇:

string[] lines = File.ReadAllLines("file.txt"); 

https://gist.github.com/paulodiogo/9134300

簡單!

+1

稍微簡單一點就是將你的中間行包裝在using語句中,這樣你就不必在你的reader上調用'Close()'。讓框架爲你做所有的事情。 – krillgar

+1

@krillgar是這樣的? –

+1

正確。 use不僅調用'Close()',而且還調用Dispose(),釋放資源。 – krillgar

相關問題