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

时间:2014-04-11 14:07:48

标签: c# asp.net .net

我在C#中很新,我发现在尝试检索项目目录中的jpg文件时遇到了一些困难。

我有以下情况:

我有一个名为 MySolution 解决方案,在此解决方案中有一些项目包括项目,名为 PdfReport 。在此项目中,有一个名为共享文件夹,在此文件夹中有一个 header.jpg 文件。

现在,如果我想获取共享目录中的所有文件的列表(如上所述是我项目中的目录),我可以这样做:

string[] filePaths = Directory.GetFiles(@"C:\Develop\EarlyWarning\public\Implementazione\Ver2\PdfReport\Shared\"); 

这项工作正常,但我不想使用绝对路径,但我宁愿使用相对于 PdfReport 项目的相对路径。< / p>

我正在寻找解决方案,但是,直到现在,我无法找到它。你能帮帮我吗?

4 个答案:

答案 0 :(得分:2)

如果您的应用程序的可执行路径为“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);

答案 1 :(得分:1)

尝试使用此

获取当前文件夹
Server.MapPath("."); 

在非ASP.NET应用程序中,但您应使用

WinForms或控制台或WPF应用程序
AppDomain.CurrentDomain.BaseDirectory

答案 2 :(得分:0)

如果你想要root相对,你可以这样做(假设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"));

根据我的经验,根相对通常是最好的,以防你移动代码。

答案 3 :(得分:0)

您可以右键单击文件 header.jpg ,选择属性,然后在属性中选择始终复制选项&#34;复制到输出目录& #34 ;.

然后在属于项目PdfReport的任何类中使用这样的方法:

public string[] ReadFiles()
{
    return Directory.GetFiles("Shared");
}

会很好用。

或者,如果您的文件在运行时永远不会更改,并且您希望在程序集中有权访问它们,那么您也可以嵌入:http://support.microsoft.com/kb/319292/en-us