C#、windows 表单、StremWriter、Header 行

C#, windows form, StremWriter, Header line

我正在尝试在我的 运行 csv 文件日志中添加一个 header。这就是我想要的,

项目名称、项目序列号、项目构建 < 第一行永远不会改变,除非文件被删除。在这种情况下,创建一个新的 header 行。

在那一行之后,我希望每次都将数据添加到下一行。

这是我目前的情况。

// 写入 CSV 字符串路径 = 如果 (!File.Exists(路径)) { File.CreateText(路径);

        }

        string projectName = ProjectName_TextBox.Text;
        string projetcBuild = ProjectBuild_TextBox.Text;
        string projectSN = SN_TextBox.Text;
        string header = "Project Name, Project Build, Project SN\n";

        
        using (StreamWriter sw = new StreamWriter(path, true)) // true for appending data to file, false to overwrite in file
        {
           
            sw.WriteLine(header);
            
           
            sw.WriteLine(string.Format(projectName + "," + projetcBuild.ToString() + "," + projectSN.ToString()));
            
            
        }

它的作用是在每次单击按钮时添加 header 和数据。我只想将 header 添加到文件中一次。只有来自表单的数据才会附加到我认为我拥有的下一行。请帮忙。

您可以在使用 File.Exists(path) 添加 headers 之前检查文件是否存在。像

    string projectName = ProjectName_TextBox.Text;
    string projetcBuild = ProjectBuild_TextBox.Text;
    string projectSN = SN_TextBox.Text;
    string header = "Project Name, Project Build, Project SN\n";

    var firstWrite = !File.Exists(path);
    using (StreamWriter sw = new StreamWriter(path, true)) // true for appending data to file, false to overwrite in file
    {
       if(firstWrite)
        sw.WriteLine(header);
        
       
        sw.WriteLine(string.Format(projectName + "," + projetcBuild.ToString() + "," + projectSN.ToString()));
        

File.CreateText returns 你是一个流媒体作者;您可以使用它,也可以借此机会编写 header


string header = "Project Name, Project Build, Project SN\n";

// Write to CSV string path
try{
  StreamWriter sw;

  if (!File.Exists(path)) {
    sw = File.CreateText(path);
    sw.WriteLine(header);
  } else
    sw = File.AppendText(path);

  string projectName = ProjectName_TextBox.Text;
  string projetcBuild = ProjectBuild_TextBox.Text;
  string projectSN = SN_TextBox.Text;
 
  sw.WriteLine(projectName + "," + projetcBuild + "," + projectSN);
            
}
finally{
  sw.Dispose(); 
}

您不需要对字符串调用 ToString。您不需要在没有占位符的字符串上调用格式。您真的不应该费心编写自己的 csv 编写器;有很多好的图书馆可以做到这一点。只要有人在其中一个文本框中输入逗号,这个简单的实现就会失败