2008-12-03 35 views
7

是否有可能以某種方式調用ReadToEnd的方法,在建設這樣後關閉StreamReader的:關閉StreamReader的ReadToEnd的

string s = new StreamReader("filename", Encoding.UTF8).ReadToEnd(); 

具有相同語義的任何替代優雅的建築也將被接受。

回答

12

我覺得你真的很後File.ReadAllText,如果你只是想從一個文件中讀取所有的文字方法儘可能最短的代碼。

如果您未指定編碼,它將自動使用UTF-8。

2

你可以使用一個using聲明,自動關閉流:

string s = null;  
using (StreamReader reader = new StreamReader("filename", Encoding.UTF8) { s = reader.ReadToEnd(); } 
+0

我現在這樣做,但希望沒有明確聲明StreamReader變量的情況下有什麼更簡短的解決方案。 – 2008-12-03 07:41:57

+0

@ jon-spectet的答案是要走的路線 – 2008-12-03 07:52:39

2

沒有沒有,但它總是使用處置誰繼承 形式IDisposable的對象一個很好的做法。如果你不這樣做在一個循環,你會得到內存泄漏

string s = string.Empty; 
using(StreamReader sr = new StreamReader("filename", Encoding.UTF8)) 
{ 
    s = sr.ReadToEnd(); 
} 
+1

有沒有必要或指責調用關閉以及處置。只要把它放在使用聲明中就足夠了。 – 2008-12-03 07:43:58

相關問題