我有一个足够简单的类用于将文本记录到.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;
}
}
}
答案 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();