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)
我试图将第二个参数添加到StreamWriter
as,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)