1

我有一个 .net windows 应用程序,我正在尝试从 c# windows 应用程序读取 .xml 文件。

但我收到错误:

找不到路径“c:\WindowsFormsApplication1\WindowsFormsApplication1\bin\Debug\~\Files\test.xml”的一部分。

但我的文件Files位于应用程序中的文件夹WindowsFormsApplication1\bin\Debug

那它为什么要搜索\bin\Debug呢?

form.cs 中的代码

DataSet dsAuthors = new DataSet("authors");
            string filePath = @"~/Files/test.xml";

            dsAuthors.ReadXml(filePath);

还请告诉我有没有办法像我们在 Web 应用程序中那样使用 Server.MapPath。

我尝试了其他解决方案,例如:

string appPath = Path.GetDirectoryName(Application.ExecutablePath);

            System.IO.DirectoryInfo directoryInfo = System.IO.Directory.GetParent(appPath);
            System.IO.DirectoryInfo directoryInfo2 = System.IO.Directory.GetParent(directoryInfo.FullName);

            string path = directoryInfo2.FullName + @"\Files";

但出现错误: Access to the path is denied.

4

2 回答 2

2

尝试:

        string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, Path.Combine("Files", "test.xml"));// @"~/Files/test.xml";

如果它不起作用,请确保 test.xml 将“复制到输出目录”属性设置为“始终复制”。

于 2012-06-26T06:48:51.763 回答
0

采用Server.MapPath

您正在使用相对网址。这不适用于 ReadXml。它需要磁盘上的绝对路径。

Server.MapPath 将采用您的虚拟路径并为您提供其绝对路径。

var fullPath = Server.MapPath("~/Files/test.xml");
dsAuthors.ReadXml(fullPath);

注意:Server.MapPath 不验证路径是否实际存在。

于 2012-06-26T06:43:48.230 回答