C#写入文本文件问题

时间:2014-07-25 08:37:11

标签: c#

我有一个足够简单的类用于将文本记录到.txt文件中我遇到的问题是,如果文本文件不存在,我将在代码中显示的点处获得异常。程序崩溃后,文本文件出现在文件夹中。如果我在log.txt文件存在的情况下运行该程序,它就可以完美运行。

代码:

class logger
{
        public string source;
        //public logger()
        //{

        //}
        public logger(string source)
        {
            CheckExists(source);
            this.source = source + "log.txt";
        }
        private void CheckExists(string source)
        {
            if (!File.Exists(source + "log.txt"))
            {
                File.Create(source + "log.txt");
            }
        }
        public void WriteToLog(string output)
        {
            try
            {
                using (StreamWriter sw = File.AppendText(this.source))
                {
                    sw.WriteLine(output);
                    sw.Close();
                }
            }
            catch (Exception e)
            {

                //point at which the code breaks;
            }

        }
}

3 个答案:

答案 0 :(得分:5)

为什么不使用File.AppendAllText

File.AppendAllText(this.source, output);

答案 1 :(得分:2)

File.Create()使文件保持打开状态,直到垃圾收集器运行,因为它返回一个你应该关闭的FileStream。因为它保持打开状态,当您随后尝试打开它时,可能会遇到共享冲突。

创建文件的更好方法是这样的:

File.WriteAllText(source + "log.txt", "");

之后会关闭文件。

答案 2 :(得分:1)

别忘了关闭。

File.Create(source + "log.txt").Close();