У меня есть объект журнала, который записывает ежедневные файлы журнала с относительным путем. Это довольно просто (.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 каталог и когда он создает новый журнал, относительный путь к файлу .. \ до Ресурсы (от Сохраненные файлы), то не можете найти d Справочник Журнал в пределах Ресурсы и выдает исключение. Однако я не могу воспроизвести проблему, используя диалоги, и я думал, что относительный путь относительно исполняемого файла? Могут ли диалоги Open/Save File изменять, как программное обеспечение вычисляет относительный путь к файлу? У кого-нибудь есть мысли? Спасибо за ваше время!
Посмотрите на этот вопрос [] (http://stackoverflow.com/questions/930816/why-does-openfiledialog-change-my- рабочий каталог). Рабочий каталог изменяется при использовании 'OpenFileDialog'. – HuorSwords
@HuorSwords Спасибо, я был наивен термину «рабочий каталог». Что мне интересно, если я печатаю Directory.GetCurrentDirectory() до и после моих диалогов, оба отпечатка идентичны. Однако проблема, безусловно, исходит из одного из диалогов. Я уверен, что восстановление каталога будет работать, но это раздражает, чтобы не удалось воспроизвести проблему, которая у меня есть! – Softerware