2013-04-09 3 views
1

Где выглядит приложение при поиске файла? Где он создан? Редко реалистично всегда указывать абсолютный путь. Например. Я попытался сохранить текстовые файлы, которые будут использоваться в приложении Visual Studio 2010 в локальном ящике проектного решения, но всегда получал ошибку во время выполнения.Рабочие каталоги файлов, используемых в приложениях Windows

ответ

0

Обычно это папка, из которой она была вызвана. Вы можете найти его с помощью _getcwd: http://msdn.microsoft.com/en-us/library/sf98bd4y%28VS.80%29.aspx

+0

Пожалуйста, определите, что вы подразумеваете под «папкой, из которой она была вызвана». –

+0

Исторически, каталог, в котором вы были, когда вы вызывали программу, т. Е. '% CD%'. В настоящее время я считаю, что это зависит от способа запуска программы. Если, например, он запускается с использованием ссылки, это обычно папка, в которой находится программа (.exe). Однако ее можно изменить в свойствах ссылки. Однако я не уверен, что такое настройка по умолчанию для VC. – mrks

+0

А как насчет того, когда процесс изменит рабочий каталог? –

0

Если вы используете относительный путь, путь, который вы поставляете, объединен с рабочим каталогом процесса.

Очень сложно поддерживать контроль над рабочим каталогом процесса GUI. Это связано с тем, что процессы графического интерфейса, как правило, запускаются множеством разных способов. Более того, диалоги файлов имеют тенденцию изменять рабочий каталог. Наконец, рабочий каталог разделяется между всеми потоками процесса и может быть изменен любым потоком. Есть много подводных камней.

Итак, в процессе графического интерфейса я предлагаю вам никогда не использовать относительные пути. Или, если вы используете относительные пути, вы конвертируете их в абсолютные пути перед их использованием. И выполните это преобразование с четко определенным корневым путем.

Если вы не пишете переносное приложение, вы не должны ожидать, что сможете сохранить его в каталоге, который содержит исполняемый файл. В современных системах исполняемые файлы часто располагаются в каталогах только для чтения.

Если вы хотите сохранить пользовательские настройки, сохраните их в соответствующем месте в профиле пользователя.

С другой стороны, если вы хотите читать файлы, которые вы никогда не изменяете, тогда разумно хранить их вместе с исполняемым файлом. Но даже в этом случае откройте файл, используя полный абсолютный путь. Создайте этот путь, объединив каталог, содержащий исполняемый файл, с относительным путем к файлу.

Таким образом, чтобы подвести итог, вы сказали:

Это редко реалистичное всегда указывать абсолютный путь.

Но я не согласен. Я бы ответил, что использование абсолютного пути очень часто является лучшим вариантом. Но вам не нужно жестко кодировать абсолютный путь. Вы можете и должны создать его во время выполнения.

Смежные вопросы