Правильный путь к файлу в приложении консоли С#
Может кто-нибудь, пожалуйста, скажите мне, как я могу получить правильный путь к файлу файла data.xml? Вот где находится файл:
![enter image description here]()
Вот мой код на С#, который проверяет, существует ли файл для поставляемого пути:
public class Parser
{
static void Main(string[] args)
{
Console.WriteLine(File.Exists("App_Data/data.xml"));
Console.Read();
}
}
Я продолжаю получать False, то есть такой файл не существует. Итак, пути к файлам, которые я пробовал до сих пор, включают:
"~/App_Data/data.xml"
"/App_Data/data.xml"
"App_Data/data.xml"
Если это было веб-приложение, я бы знал, что делать, используя HttpContext и получая файл. Но поскольку это консольное приложение, я не знаю.
В зависимости от того, какая разница между консольным приложением и исполняемым приложением? Правильно ли я понимаю, что нет никакой разницы, поскольку приложение консоли может быть исполняемым приложением, если оно имеет метод Main?
благодаря
Ответы
Ответ 1
Вы также можете добавить data.xml в свой каталог сборки вывода. Вам нужно будет щелкнуть правой кнопкой мыши по файлу и выбрать " Copy if newer
или " Copy always
для параметра " Copy to output directory option
.
Затем вы можете использовать следующее:
Console.WriteLine(File.Exists("App_Data/data.xml")); // Should print True
Однако, если вы ожидаете изменения data.xml, просто укажите на полный путь, где-то вне вашего проекта (при условии, что App_Data/data.xml скопирован в C: /Temp):
Console.WriteLine(File.Exists("C:/Temp/App_Data/data.xml")); // Prints True
Кроме того, для вашего другого вопроса, связанного с консолью и исполняемым приложением, exe может быть другим типом приложения, таким как консоль или wpf или winforms (что создает визуальную студию).
Ответ 2
Получить текущий рабочий каталог:
Directory.GetCurrentDirectory() + "/App_Data/data.xml";
Важно: App_Data
должен находиться в том же каталоге, что и ваше приложение.
Лучший способ получить файл data.xml
- переносить его с вашим приложением или сохранять его, например, в "домашнем" каталоге вашего пользователя (или как он называется в Windows 8).
Ответ 3
Вы могли бы использовать файл и использовать отражение, чтобы получить его.
Steam s = Assembly.GetExecutingAssembly().GetManifestResourceStream("file name");
XmlDocument d = new XmlDocument();
steamReader r = new StreamReader(s);
d.LoadXml(r.ReadToEnd());
r.Close();
Проверьте эту статью. Он показывает, как вставлять и получать файл, используя отражение: http://support.microsoft.com/kb/319292