如何使用相对路径从目录中获取文件
本文关键字:获取 文件 何使用 相对 路径 | 更新日期: 2023-09-27 17:57:51
我是C#的新手,在检索项目目录中的jpg文件时遇到了一些困难。
我有以下情况:
我有一个名为MySolution的解决方案,在该解决方案中有一些项目,包括名为PdfReport。在该项目中,有一个名为Shared的文件夹,并且在该文件夹中有一个header.jpg文件。
现在,如果我想获得Shared目录中的所有文件的列表(正如所解释的,这是我项目中的一个目录),我可以这样做:
string[] filePaths = Directory.GetFiles(@"C:'Develop'EarlyWarning'public'Implementazione'Ver2'PdfReport'Shared'");
这很好,但我不想使用绝对路径,但我宁愿使用相对于PdfReport项目的相对路径。
我正在寻找解决方案,但到目前为止,我还找不到。你能帮我做吗?
如果您的应用程序的可执行路径是"C:''Develop''EarlyWarning''public''Implementazione''Ver2",您可以以的形式访问PdfReport''Shared文件夹
string exePath = System.IO.Path.GetDirectoryName(Application.ExecutablePath);
string sharedPath = Path.Combine(exePath, "PdfReport''Shared''");
string[] filePaths = Directory.GetFiles(sharedPath);
尝试使用此获取当前文件夹
Server.MapPath(".");
在WinForms、Console或WPF应用程序之外的非ASP.NET应用程序中,您应该使用
AppDomain.CurrentDomain.BaseDirectory
如果你想要相对根,你可以这样做(假设C:''Develop''EarlyWarning是站点根)
string[] filePaths = Directory.GetFiles(Server.MapPath("~/public/Implementazione/Ver2/PdfReport/Shared"));
或者如果你想要普通的相对,
//assuming you're in the public folder
string[] filePathes = Directory.GetFiles(Server.MapPath("/Implementazione/Ver2/PdfReport/Shared"));
根据我的经验,根关系通常是最好的,以防你移动代码。
您可以右键单击文件header.jpg,选择"属性",然后选择属性"复制到输出目录"上的选项始终复制。
然后是这样的方法,在属于项目PdfReport的任何类中:
public string[] ReadFiles()
{
return Directory.GetFiles("Shared");
}
将运行良好。
或者,如果您有在运行时永远不会更改的文件,并且您希望在程序集中访问这些文件,您也可以嵌入:http://support.microsoft.com/kb/319292/en-us