【问题标题】:How to check if file exists in a folder in my project in Visual Studio solution如何在 Visual Studio 解决方案中检查我的项目中的文件夹中是否存在文件
【发布时间】:2013-12-11 14:06:04
【问题描述】:

我在我的项目中创建了一个文件夹。在我的代码中,我想确定该文件夹中是否存在文件。我该怎么做?

---------- 编辑:

我会尝试以不同的方式提出问题。

我有一个 mvc 4 项目,其中包含所有启动文件夹:Controllers、Views、Models 等。我在我的项目中添加了另一个文件夹 MyResources。在那个文件夹中,我添加了几个 pdf 文件。在我的一个控制器中,我有一个逻辑必须检查传递的文件名是否存在于该特定文件夹中。假设我通过了PassedFileName.pd,我想检查该文件是否在MyResources 文件夹中可用。我试过System.IO.File.Exists(@"~/MyResources/PassedFileName.pdf"),但它总是返回false。 当我右键单击文件本身(在解决方案资源管理器中)并查看其实际路径时,它会显示:C:\(phisical-path-on-my-machine)\MyProjectName\Resources\ReturnHelpPdf.pdf。这让我觉得我需要以某种方式进入我的项目的路径,所以我可以string.Format 它。我希望你能理解我的担忧。我知道如何检查文件系统上是否存在文件。但是在这里我必须检查一些我不完整的东西,确定我是否有完整的信息。

【问题讨论】:

  • 你想要做什么来让你的运行代码检查你的视觉工作室项目中的一个文件夹?除非您正在为 Visual Studio 编写插件,否则您的代码不应该关心项目的外观。
  • 当您的代码运行时,没有人知道您的项目结构是什么。所以你不能。如果您只是在谈论检查路径中是否存在文件,那么已经有很多答案可供您使用。
  • 项目类型是什么?
  • @Damith 这是 MVC4 项目。

标签: c# .net visual-studio-2010 path projects-and-solutions


【解决方案1】:

您可以使用var fileExists = File.Exists(path); 检查给定路径中是​​否存在文件 如果文件存在,变量fileExists 将为true 否则为false

当然你也可以直接在if语句中检查

if(File.Exists(path))
{
    ....
}
else { ... }

【讨论】:

  • 我只能得到相对路径,它总是返回false。我想知道如何获取文件的绝对路径,以便我可以执行 File.Exists(full_path)
  • 你知道“真正的目录”吗?如果你这样做了,你可以像这样使用Path.Combinevar absolute_path = Path.Combine(prefix, relative path);如果你想获得折叠“...”的完整路径,使用Path.GetFullPath((new Uri(absolute_path)).LocalPath);
【解决方案2】:

问题:您需要提供文件的有效physical path。用File.Exists()方法检查。

解决方案:你需要使用Server.MapPath()函数来获取给定relative path的有效physical Path

试试这个:

 String path=Server.MapPath(@"~/MyResources/PassedFileName.pdf");
 if(File.Exists(path))
 {
  //File Found

 }

【讨论】:

  • @ScottChamberlain:是的,我在发布我的分析器后看到了编辑,现在再次编辑,感谢您的剩余 :)
【解决方案3】:

您可以使用File.Exists 方法检查路径上是否存在文件。这在 System.IO 命名空间中可用。

string filePath= @"c:\Projects\sample.txt";
if(File.Exists(filePath))
{
  //Do something
}

【讨论】:

    【解决方案4】:

    您可以通过编程方式使用System.IO.File.Exists()System.IO.Directory.Exists() 方法

    【讨论】:

      【解决方案5】:

      要解析~\ 路径,您需要使用函数HttpServerUtility.MapPath

      System.IO.File.Exists(HttpServerUtility.MapPath(@"~/MyResources/PassedFileName.pdf"))
      

      MapPath 的作用是将~\ 转换为您的项目当前在 IIS 服务器上运行的路径。

      【讨论】:

        【解决方案6】:

        Visual Studio 解决方案中的文件夹通常用于组织目的,它们不存在于文件系统中。由于 Visual Studio 解决方案文件上包含 XML,因此您可以加载该文件并使用 XPath,查找文件夹的位置,以及其中是否有任何文件。

        您只能创建解决方案、一个文件夹并向其中添加一个文件,并在 XML 中检查 Visual Studio 如何存储该信息。

        【讨论】:

          【解决方案7】:

          如果您已经知道文件名,请使用

          if(File.Exist("File path"))
          {
          }
          

          如果要检查该文件夹中是否存在任何文件,请使用

          string[] files = Directory.GetFiles("Directory Path");
          if(files.Length > 0)
          {
          //File exist
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-01-02
            • 1970-01-01
            • 1970-01-01
            • 2022-01-03
            • 2014-06-15
            • 1970-01-01
            • 2012-12-23
            • 2022-11-29
            相关资源
            最近更新 更多