2013-01-31 62 views
-1

我必須使用一些包含西里爾語文本的文件,並且在Visual Studio 2012 Ultimate中使用StreamReader/StreamWriterStreamWriter的視覺工作室錯誤還是我的誤解?

但是,有一些荒謬的問題(或我的誤解)。下面的構造函數工作得很好:

using (StreamReader reader = new StreamReader(someFile, Encoding.Default)){ 
} 

然而,當我嘗試以下方法:

using (StreamWriter writer = new StreamWriter(someOtherfile, Encoding.Default)){ 
} 

我得到一個編譯時錯誤的ivalid構造函數。但是,以下是MSDN中的規範:

public StreamWriter(Stream stream, Encoding encoding); 

我在做什麼錯?

+3

你確定* someOtherfile *是一個流還是一個可轉換爲流的類型? – Tigran

+0

是的,每次我嘗試時都會發生這種情況,即使在關閉剛剛使用StreamReader打開的文件/流之後,我嘗試使用StreamWriter打開它。 –

+0

@JohnSmith發佈聲明和修改'somefile'和'someotherfile'的代碼。 – Mansfield

回答

5

如果你看一下StreamWriterStreamReader之間的差異,你會看到,而there is a constructor認爲:

StreamReader(string, Encoding) 

StreamWriter(string, Encoding) 

構造我的猜測是someFilesomeOtherFile的類型是string,而不是Stream

我會建議你不要使用Encoding.Default除非你真的,真的確定你需要特定於平臺的默認編碼,它可能無法處理所有的Unicode。如果可能的話,可以使用UTF-8。

+0

謝謝,我解決了它使用公共StreamWriter(字符串路徑,布爾附加,編碼編碼);構造函數。 –