如何使用相对路径从目录中获取文件

本文关键字:获取 文件 何使用 相对 路径 | 更新日期: 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