0

コード:

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);
        }
    }

の出力

これ

それらのキャラクターを取り除く方法が本当にわかりません。

4

2 に答える 2

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または、この特定の例では、次のメソッドを使用して、このすべてのコードを1行のコードに短縮できます。

if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
    string path = sfd.FileName;
    File.WriteAllLines(path, hello);
}

また注意してください!;あなたはあなたのif声明の後に末尾があります。これは、ユーザーがファイルダイアログを確認またはキャンセルしたかどうかに関係なく、ファイルへの書き込みが常に行われることを意味します。最後の例でどのように削除したかに注目してください。

于 2013-01-18T06:38:27.090 に答える
0

試す:

StreamWriter sw = new StreamWriter(path);

StreamWriter は、ファイルにテキストを書き込むのに非常に理想的です。BinaryWriter はプリミティブ型をバイナリでストリームに書き込み、特定のエンコーディングでの文字列の書き込みをサポートします。

于 2013-01-18T06:42:10.420 に答える