代码:
private void btnSaveFile_Click(object sender, EventArgs e)
{
listBox1.MultiColumn = true;
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "Text File|*.txt";
if (sfd.ShowDialog() == DialogResult.OK) ;
{
string path = sfd.FileName;
BinaryWriter bw = new BinaryWriter(File.Create(path));
foreach (string s in hello)
{
bw.Write(s + Environment.NewLine);
}
}
的输出
我真的不知道如何摆脱这些角色。
答案 0 :(得分:3)
如果要写入文本文件,请不要使用BinaryWriter。它附加了字符串的长度,这解释了为什么要观察那些奇怪的字符。
您可以使用TextWriter
:
using (var fileStream = File.Create(path)
using (var writer = new StreamWriter(fileStream))
{
foreach (string s in hello)
{
writer.Write(s + Environment.NewLine);
}
}
或者在此特定示例中,您可以使用WriteAllLines
方法将所有代码缩短为一行代码:
if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
string path = sfd.FileName;
File.WriteAllLines(path, hello);
}
还要小心!在;
声明后,您有一个尾随if
。这意味着无论用户是否确认或取消了文件对话框,对文件的写入都将始终。请注意我在上一个示例中是如何删除它的。
答案 1 :(得分:0)
尝试:
StreamWriter sw = new StreamWriter(path);
StreamWriter非常适合在文件中编写文本。而BinaryWriter将二进制中的原始类型写入流并支持以特定编码写入字符串。