Sae*_*ani 28 c# stringbuilder streamwriter
我正在尝试使用DialogResult和保存文件StringBuilder.在制作文本后,我调用以下代码来保存文件:
if (dr == DialogResult.OK)
{
StreamWriter sw = new StreamWriter(saveFileDialog1.FileName);
sw.Write(sb.ToString());
sw.Close();
}
Run Code Online (Sandbox Code Playgroud)
我试图将第二个参数添加到StreamWriteras,Encoding.UTF8但由于第一个参数是a string而不是a Stream,因此它不会编译它.
如何将该字符串转换为流,以便能够将第二个参数作为编码传递?
这样做的原因,是在我的文字是什么地方我有µ,但是当文件被保存它显示像μ这样µ越来越screwd!
谢谢
Pol*_*ial 48
把它包装成一个FileStream.
StreamWriter sw = new StreamWriter(
new FileStream(saveFileDialog1.FileName, FileMode.Open, FileAccess.ReadWrite),
Encoding.UTF8
);
Run Code Online (Sandbox Code Playgroud)
如果要追加,请FileMode.Append改用.
你也应该叫Dispose()一上try/finally块,或使用using块,当它超过了处置的对象using范围:
using(
var sw = new StreamWriter(
new FileStream(saveFileDialog1.FileName, FileMode.Open, FileAccess.ReadWrite),
Encoding.UTF8
)
)
{
sw.Write(sb.ToString());
}
Run Code Online (Sandbox Code Playgroud)
这将正确关闭并在所有异常路径中处理流.
Hen*_*man 13
filename,appendMode,encoding有一个构造函数.
使用适当的using块看起来像:
if (dr == DialogResult.OK)
{
using (StreamWriter sw = new StreamWriter(saveFileDialog1.FileName,
false, Encoding.UTF8))
{
sw.Write(sb.ToString());
//sw.Close();
}
}
Run Code Online (Sandbox Code Playgroud)