Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用相对路径从目录中获取文件?_C#_Asp.net_.net - Fatal编程技术网

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

C# 如何使用相对路径从目录中获取文件?,c#,asp.net,.net,C#,Asp.net,.net,我是C#方面的新手,在尝试检索项目目录中的jpg文件时遇到了一些困难 我有以下情况: 我有一个名为MySolution的解决方案,在这个解决方案中有一些项目,包括一个名为PdfReport的项目。在该项目中有一个名为“共享”的文件夹,在该文件夹中有一个header.jpg文件 现在,如果我想获得共享目录中所有文件的列表(如前所述,这是我项目中的一个目录),我可以执行以下操作: string[] filePaths = Directory.GetFiles(@"C:\Develop\EarlyWa

我是C#方面的新手,在尝试检索项目目录中的jpg文件时遇到了一些困难

我有以下情况:

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

现在,如果我想获得共享目录中所有文件的列表(如前所述,这是我项目中的一个目录),我可以执行以下操作:

string[] filePaths = Directory.GetFiles(@"C:\Develop\EarlyWarning\public\Implementazione\Ver2\PdfReport\Shared\"); 
这项工作很好,但我不想使用绝对路径,但我宁愿使用相对于PdfReport项目的相对路径


我正在寻找解决方案,但直到现在,我都找不到。你能帮我做这件事吗?

尝试使用此命令获取当前文件夹

Server.MapPath("."); 
在非ASP.NET应用程序中,但应使用WinForms或Console或WPF应用程序

AppDomain.CurrentDomain.BaseDirectory

如果希望根相对,可以这样做(假设C:\Develop\EarlyWarning是站点根)

或者如果你想要一个普通的亲戚

//assuming you're in the public folder
string[] filePathes = Directory.GetFiles(Server.MapPath("/Implementazione/Ver2/PdfReport/Shared"));

根据我的经验,Root-relative通常是最好的,以防您移动代码。

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

您可以右键单击文件标题.jpg,选择属性,然后选择属性“复制到输出目录”上的选项始终复制

然后,在属于project PdfReport的任何类中,使用如下方法:

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


或者,如果您的文件在运行时从未更改,并且希望能够在程序集中访问这些文件,您也可以嵌入:

但这仅限于我在.NET web应用程序中或在标准应用程序中?标准应用程序是什么意思?非web应用程序
环境
是在本地应用程序中执行此操作的类application@AndreaNobili然后删除
asp.net
标记可能是明智的;鉴于此,答案完全正确。
public string[] ReadFiles()
{
    return Directory.GetFiles("Shared");
}