编写CSV日志文件

use*_*652 1 c# csv

我有一个需要将数据点记录到.CSV文件中的Winforms程序.它相当简单,日期/时间和双倍(数据),然后转到下一行.

这是我到目前为止(不工作,我得到一个错误,说文件正忙/已经打开 - 但是,它是空的)

if (!Directory.Exists(SavePath.Text + "\\LOG"))
    Directory.CreateDirectory(SavePath.Text + "\\LOG");

string LogFileName = SavePath.Text + "\\LOG\\Seeing-Log-" + TimeNow.ToString("yyyy-MM-dd") + ".csv";

if (!File.Exists(LogFileName))
    File.Create(LogFileName);

string LogString = TimeNow.ToString("yyyy-MM-dd-_HH-mm-ss") + "," + FWHM_Value.ToString("F:");
File.AppendAllText(LogFileName, LogString + Environment.NewLine);
Run Code Online (Sandbox Code Playgroud)

这是生成错误的最后一行.

知道我做错了什么吗?

谢谢Steve

Dam*_*ver 6

File.Create返回FileStream刚刚创建的文件的open .更改代码以FileStream在不存在和存在的文件情况下使用,或者在创建文件后关闭文件:

if (!File.Exists(LogFileName))
  File.Create(LogFileName).Close();
Run Code Online (Sandbox Code Playgroud)

但是,当然,如果您查看以下文档AppendAllText:

将指定的字符串追加到文件中,如果该文件尚不存在则创建该文件.

您会发现上述两行完全是冗余的,可以删除:

if (!Directory.Exists(SavePath.Text + "\\LOG"))
  Directory.CreateDirectory(SavePath.Text + "\\LOG");
string LogString = TimeNow.ToString("yyyy-MM-dd-_HH-mm-ss") + "," + FWHM_Value.ToString("F:");
File.AppendAllText(LogFileName, LogString + Environment.NewLine);
Run Code Online (Sandbox Code Playgroud)