C# 保存文件以便输出多行

C# save file so that the output is multi-lines

我第一次尝试“保存文件”按钮。 它出奇地顺利。 :D 我已经能够让文件将来自不同文本框的多条用户输入文本合并到一个文件中,并将其保存为文本文件输出。

我被卡住的地方是我试图弄清楚如何将文本文件分成多行以便于阅读。我曾尝试在线搜索示例,但我所看到的一切都显示了相反的情况,即如何将多个文本输入组合到一个文件中。我已经知道了。

这是我的代码。我正在尝试将它分成长空白处的新行。 提前致谢。

private void button1_Click_2(object sender, EventArgs e)
    {
        SaveFileDialog sfd = new SaveFileDialog();
        sfd.Filter = "Text File|*.txt";
        sfd.FileName = "Writing Prompt- " + Txt_Prompt_Title.Text;
        if (sfd.ShowDialog() == DialogResult.OK)
        {
            string path = sfd.FileName;
           TextWriter sf = new StreamWriter (File.Create(path));
            sf.Write("Writing Prompt: " + Txt_Prompt_Title.Text +  "        " + Lbl_Prompt_Output.Text + "           " + Txt_Prompt_Notes.Text);
            sf.Dispose();

        }
    }

我想通了。

 private void button1_Click_2(object sender, EventArgs e)
    {
        SaveFileDialog sfd = new SaveFileDialog();
        sfd.Filter = "Text File|*.txt";
        sfd.FileName = "Writing Prompt- " + Txt_Prompt_Title.Text;
        if (sfd.ShowDialog() == DialogResult.OK)
        {
            string path = sfd.FileName;
           TextWriter sf = new StreamWriter (File.Create(path));
            sf.Write("Writing Prompt: " + Txt_Prompt_Title.Text + 
                "\n" + 
                "\n " + Lbl_Prompt_Output.Text + 
                "\n" +
                "\n " + Txt_Prompt_Notes.Text);
            sf.Dispose();

        }
    }

这只是对 OP self-answer 的重述,合并了评论中提出的建议。我也使用原始的 using 语法,并不是每个人都在使用最新的编译器。如果 OP 更新 his/her 答案,我会删除这个:

private void button1_Click_2(object sender, EventArgs e)
{
    using (var sfd = new SaveFileDialog()) {
        sfd.Filter = "Text File|*.txt";
        sfd.FileName = "Writing Prompt- " + Txt_Prompt_Title.Text;
        if (sfd.ShowDialog() == DialogResult.OK)
        {
            string path = sfd.FileName;
            using (var sf = new StreamWriter (File.Create(path))){
                sf.Write("Writing Prompt: " + Txt_Prompt_Title.Text + 
                "\n" + 
                "\n " + Lbl_Prompt_Output.Text + 
                "\n" +
                "\n " + Txt_Prompt_Notes.Text);
           }
        }
    }
}

我没有添加的是使用 Environment.Newline 而不是 "\n" 的代码,或者删除字符串连接的代码(这会导致很多 垃圾 需要垃圾收集的字符串对象)。正如@MathieuGuindon 所建议的那样,实现两者的一种方法是一遍又一遍地使用 .WriteLine

您可能想要查找 string interpolation 以创建将其他对象的字符串渲染嵌入其中的字符串。

您真的应该按照@jimi 向您指出的link 到using statement。它提供了一种方法来确保您正确 Dispose 实现 IDisposable 的对象,同时使您的代码更具可读性。