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

255
19 ноября 2017, 13:15

Есть такой код:

if(File.Exists("text.txt")) //работа с файлом

Вопрос в следующем: как определяется каталог в котором будет производится поиск указанного файла?

Как спровоцировать ситуацию, когда файл существует ( в случае с данным примером в каталоге откуда было запущено приложение ) но условие не выполнится?

Answer 1

Если указан относительный путь к файлу, то поиск будет проходить относительно текущего каталога. (Получить или изменить его можно при помощи Environment.CurrentDirectory.)

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

Также вы можете установить произвольный рабочий каталог через ярлык:

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

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

READ ALSO
Синхронизация детей Unity

Синхронизация детей Unity

Использую компонент Network Transform, позиция синхронизируется нормальноПробую использовать Netwrok Transform Child, позиция детей не синхронизируется вообще

208