有人可以告诉我如何获取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方法,则它可以成为可执行应用程序?
谢谢
您还可以将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(这是Visual Studio将它们组合的方式。
获取当前工作目录:
Directory.GetCurrentDirectory() + "/App_Data/data.xml";
重要:App_Data
必须与您的应用程序位于同一目录中。
获取data.xml
文件的最佳方法是随应用程序一起保存或保存它,例如在用户的“主”目录中(或Windows 8中称为的目录)。
您可以嵌入文件并使用反射来获取它。
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