编写CSV日志文件

时间:2014-07-04 06:22:41

标签: c# csv

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

这是我到目前为止所做的事情(没有工作,我收到一条错误,说文件正忙/已经打开 - 但是,它是空的)

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

这是产生错误的最后一行。

知道我做错了吗?

感谢 史蒂夫

4 个答案:

答案 0 :(得分:6)

File.Create会向刚刚创建的文件返回一个打开的FileStream。在不存在和不存在的文件中更改代码以使用FileStream,或者在创建文件后关闭文件:

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

但是,当然,如果您查看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);

答案 1 :(得分:3)

您甚至可以使用免费的looging工具。这是一个' log4net'

您也可以使用此编写csv文件。我假设你目前没有使用日志工具。它将为你工​​作,没有任何实施代码。

http://element533.blogspot.in/2010/05/writing-to-csv-using-log4net.html

度过美好的一天!!

答案 2 :(得分:2)

替换

File.Create(LogFileName);

File.Create(LogFileName).Close();

请参阅this以创建空文件。

答案 3 :(得分:0)

创建文件时会锁定该文件。只需将您的代码更新为:

                File.Create(LogFileName).Close();