【问题标题】:How get file from a directory using relative path?如何使用相对路径从目录中获取文件?
【发布时间】:2014-04-11 14:07:48
【问题描述】:

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

我有以下情况:

我有一个名为 MySolutionSolution,在这个解决方案中有一些项目,包括一个名为 PdfReportproject强>。在这个项目里面有一个名为Shared文件夹,在这个文件夹里面有一个header.jpg文件。

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

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

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

我正在寻找一个解决方案来做到这一点,但直到现在,我都找不到它。你能帮我做吗?

【问题讨论】:

    标签: c# asp.net .net


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      尝试使用这个获取当前文件夹

      Server.MapPath("."); 
      

      在非 ASP.NET 应用程序中,您应该使用 WinForms 或控制台或 WPF 应用程序

      AppDomain.CurrentDomain.BaseDirectory
      

      【讨论】:

      • 但这仅适用于我在 .NET Web 应用程序或标准应用程序中?
      • 标准应用程序是什么意思?
      • 非网络应用程序
      • Environment 是在本地应用程序中执行此操作的类
      • @AndreaNobili 然后删除asp.net 标签可能是谨慎的;鉴于此,答案是完全有效的。
      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

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

        会很好用。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-11-30
          • 1970-01-01
          • 2020-05-27
          • 2012-06-13
          • 1970-01-01
          • 2011-09-01
          相关资源
          最近更新 更多