我在C#中很新,我发现在尝试检索项目目录中的jpg文件时遇到了一些困难。
我有以下情况:
我有一个名为 MySolution 的解决方案,在此解决方案中有一些项目包括项目,名为 PdfReport 。在此项目中,有一个名为共享的文件夹,在此文件夹中有一个 header.jpg 文件。
现在,如果我想获取共享目录中的所有文件的列表(如上所述是我项目中的目录),我可以这样做:
string[] filePaths = Directory.GetFiles(@"C:\Develop\EarlyWarning\public\Implementazione\Ver2\PdfReport\Shared\");
这项工作正常,但我不想使用绝对路径,但我宁愿使用相对于 PdfReport 项目的相对路径。< / p>
我正在寻找解决方案,但是,直到现在,我无法找到它。你能帮帮我吗?
答案 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