繁体   English   中英

当两个文件在C#中的不同位置具有相同名称时,查找特定的文件路径

[英]Finding a specific file path when two files have the same name in different locations in C#

我正在尝试在我的代码中加载并保存一个名为Modules.xml的xml文件。 我目前已将文件路径进行了硬编码,如下所示。 我试图在我的代码中获取文件路径,而不对其进行硬编码。

我尝试使用Path.GetDirectoryName new FileInfo("Modules.xml").Directory.FullName 但是,当我需要的文件位于主解决方案文件夹中时,这两个文件都将我的调试文件夹中的文件作为目标。

有没有一种方法可以将文件定位在我的主解决方案文件夹中,而不是我的调试文件夹中? (两个文件都称为Modules.xml)

doc.Save("C:\\Users\\Matthew\\Desktop\\Year4\\Object Oriented\\Project1\\Project1\\Modules.xml");

这两个文件位置如下所示:

C:\Users\Matthew\Desktop\Year4\Object Oriented\Project1\Project1\Modules.xml

^^^这是我的代码所需的文件路径^^^

C:\Users\Matthew\Desktop\Year4\Object Oriented\Project1\Project1\bin\Debug\Modules.xml

最好的方法是使用配置文件(例如app.config )来存储这样的字符串。 然后,您可以更改文件路径而无需重新编译代码,并且文件可以存储在应用程序可访问的任何位置。

如果您确实要按照说明的方式访问文件, AppDomain.CurrentDomain.BaseDirectory将在运行时为您提供bin / Debug位置。 然后您可以从那里找到相对路径,例如:

Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\..\", fileName);

例如,其中fileName是“ Modules.xml”。

我尝试使用Path.GetDirectoryName和新的FileInfo(“ Modules.xml”)。Directory.FullName。 但是,当我需要的文件位于主解决方案文件夹中时,这两个文件都将我的调试文件夹中的文件作为目标。

这是因为bin\\Debug是启动和运行项目时的工作目录。 要更改此设置,可以将working directory environment variable为指向您的解决方案目录(而不是bin\\debug|release ),我不建议这样做。 因为当您最终完成开发并发布应用程序时,将没有任何解决方案目录可以保存您的XML文件。 我建议将XML文件复制到输出文件夹。 无论您是处于开发(调试)还是生产(发布)模式,XML始终都将被复制到最终目录。 您可以使用诸如AppDomain.CurrentDomain.BaseDirectory类的内容访问工作目录。 要启用将XML复制到输出目录,请右键单击它,选择“属性”,将“ Build Action设置为“ None ,然后将“ Copy to Output Directory设置为Copy AlwaysCopy if newer 您现在可以出发了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM