我必须处理一些包含西里尔文本的文件,并且我在Visual Studio 2012 Ultimate中使用StreamReader
/ StreamWriter
。
然而,有一些荒谬的问题(或我的误解)。以下构造函数工作正常:
using (StreamReader reader = new StreamReader(someFile, Encoding.Default)){
}
然而,当我尝试以下内容时:
using (StreamWriter writer = new StreamWriter(someOtherfile, Encoding.Default)){
}
我得到一个ivalid构造函数的编译时错误。然而,以下是MSDN的规范:
public StreamWriter(Stream stream, Encoding encoding);
我做错了什么?
答案 0 :(得分:5)
如果你看一下StreamWriter
和StreamReader
之间的差异,你会看到there is a constructor之间的差异:
StreamReader(string, Encoding)
是的构造函数
StreamWriter(string, Encoding)
我的猜测是someFile
和someOtherFile
的类型是string
,而不是Stream
。
我还建议你不要使用Encoding.Default
,除非你真的非常确定你想要特定于平台的默认编码,这可能无法处理所有的Unicode格式。如果可能,请改用UTF-8。