Страницы

Поиск по вопросам

четверг, 20 декабря 2018 г.

Как определяется каталог поиска файла?

Есть такой код:
if(File.Exists("text.txt")) //работа с файлом
Вопрос в следующем: как определяется каталог в котором будет производится поиск указанного файла?
Как спровоцировать ситуацию, когда файл существует ( в случае с данным примером в каталоге откуда было запущено приложение ) но условие не выполнится?


Ответ

Если указан относительный путь к файлу, то поиск будет проходить относительно текущего каталога. (Получить или изменить его можно при помощи Environment.CurrentDirectory.)
Обычно при запуске программы текущий каталог наследуется от запускающей программы*. Это значит, что если вы запустите программу из командной строки, находясь в каталоге с программой, то текущий каталог программы будет совпадать с каталогом, где она расположена. Если вы запустите программу из другого каталога (всё равно, по относительному или по полному пути), каталог программы и её текущий каталог будут отличаться.
Также вы можете установить произвольный рабочий каталог через ярлык:

Ну и программа сама может поменять свой рабочий каталог в любой момент через уже упомянутое свойство Environment.CurrentDirectory

*Если в параметрах функции CreateProcess не указан необязательный параметр lpCurrentDirectory. Ну или для C# если в ProcessStartInfo не установлено свойство WorkingDirectory

Комментариев нет:

Отправить комментарий