C#控制台应用程序中的正确文件路径

问题描述 投票:17回答:3

有人可以告诉我如何获取data.xml文件的正确文件路径吗?这是文件所在的位置:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9JbXN4dC5qcGcifQ==” alt =“在此处输入图像描述”>

这是我的C#代码,正在检查以查看所提供路径的文件是否存在:

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"

如果这是一个Web应用程序,我将通过使用HttpContext并获取文件来知道该怎么做。但是,由于这是一个控制台应用程序,所以我不知道。

有关说明,控制台应用程序和可执行应用程序有什么区别?我是否正确,没有区别,因为如果控制台应用程序具有Main方法,则它可以成为可执行应用程序?

谢谢

c#-4.0 console-application relative-path filepath
3个回答
20
投票

您还可以将data.xml添加到输出构建目录中。您需要右键单击文件,然后为Copy if newer选择Copy alwaysCopy 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(这是Visual Studio将它们组合的方式。


12
投票

获取当前工作目录:

Directory.GetCurrentDirectory() + "/App_Data/data.xml";

重要:App_Data必须与您的应用程序位于同一目录中。

获取data.xml文件的最佳方法是随应用程序一起保存或保存它,例如在用户的“主”目录中(或Windows 8中称为的目录)。


0
投票

您可以嵌入文件并使用反射来获取它。

Stream s = Assembly.GetExecutingAssembly().GetManifestResourceStream("file name");
XmlDocument d = new XmlDocument();
steamReader sr = new StreamReader(s);
d.LoadXml(sr.ReadToEnd());
r.Close();

查看此文章。它显示了如何使用反射嵌入和获取文件:https://docs.microsoft.com/en-us/dotnet/api/system.reflection.assembly.getmanifestresourcestream?view=netframework-4.8

© www.soinside.com 2019 - 2024. All rights reserved.