【问题标题】:Writing a CSV log file编写 CSV 日志文件
【发布时间】:2014-07-04 06:22:40
【问题描述】:

我有一个 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);

最后一行会产生错误。

知道我做错了什么吗?

谢谢 史蒂夫

【问题讨论】:

  • 我没有复制确切的错误消息,但它说文件正忙/已经打开。当然,没有其他东西可以访问它。如果程序不存在,程序实际上会创建它。那部分正在工作。
  • 您忘记关闭文件
  • 嗯。我发现的例子(我认为是在 MSDN 上)没有调用任何东西来关闭文件,或者为此保存它。我去看看,谢谢

标签: c# csv


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    您也可以使用它来编写 csv 文件。我假设您目前没有使用日志记录工具。无需任何实现代码即可为您工作。

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

    祝你有美好的一天!

    【讨论】:

      【解决方案3】:

      替换

      File.Create(LogFileName);
      

      File.Create(LogFileName).Close();
      

      查看this 创建空文件。

      【讨论】:

        【解决方案4】:

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

                        File.Create(LogFileName).Close();
        

        【讨论】:

          猜你喜欢
          • 2013-11-15
          • 1970-01-01
          • 2011-11-16
          • 2018-03-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多