我有一个日志对象,它使用相对路径写入每日日志文件。这相当简单(.NET 4.0,VS 2010)。
public void LogLine(string txt)
{
DateTime dt = DateTime.Now;
if (CurrentDay != dt.Day)
{
string newFileName = "..\\Log\\" + programName + dt.Day + ".log";
fs = new FileStream(newFileName, FileMode.Create, FileAccess.Write);
sw = new StreamWriter(fs);
CurrentDay = dt.Day;
}
sw.WriteLine(txt);
}
这几乎一直有效。但是,有时我会得到一个看似随机的DirectoryNotFoundException,但路径完全不同。例如,当我第一次运行程序时,它会创建一个文件:
C:\MyFiles\Log\MyApp19.log
在使用了一些程序并让它在一夜之间运行以便创建一个新文件和流之后(在午夜之后的第一个日志中),我回到DirectoryNotFoundException,说明如下:
C:\MyFiles\MyOtherFiles\Resources\Log\MyApp20.log
我唯一能想到的是:在软件的整个生命周期中,我多次使用 OpenFileDialog 和 SaveFileDialog,其中一个打开/保存对话框访问其中的文件
C:\MyFiles\MyOtherFiles\Resources\SavedFiles\
所以在我看来,当我使用对话框时,我打开/保存一些东西到SavedFiles目录中,当它创建新日志时,相对文件路径..\上升到Resources(来自SavedFiles),然后找不到Resources中的目录Log并引发异常。但是,我无法使用对话框重现问题,并且我认为相对路径是相对于可执行文件的?打开/保存文件对话框能否改变软件计算相对文件路径的方式?有人有什么想法吗?谢谢你的时间!