【问题标题】:.NET find file in all folder under a directory.NET 在目录下的所有文件夹中查找文件
【发布时间】:2017-09-29 07:04:27
【问题描述】:

我相信这是一个直截了当的问题,希望我不会生气。 编写代码查找C盘中名为text.txt的文件

If IO.File.Exists("C:\text.txt") Then

        MessageBox.Show("Found text file")
    Else

        MessageBox.Show("Not Found")
End If

“C:\text.txt”位于子文件夹中时无法找到。 应该使用什么语法?

我在寻找解决方案上花费了过多的时间,因此在这里提出了一个简单的问题。

谢谢!

【问题讨论】:

  • 如果您阅读过File.Exists 的文档,那么您已经知道答案了。如果您还没有阅读文档,为什么还没有阅读文档?帮助菜单不在 VS 中进行装饰。如果您需要有关类型或方法的帮助,请使用“帮助”菜单打开该类型或方法的文档。只有在这样做之后,如果需要,您才应该考虑其他信息来源。
  • @jmcilhinney 感谢您的回复,我已阅读 File.Exists 文档,似乎要找到该文件,它必须指向确切的位置(子文件夹)。我仍然是编程新手,因此仍然不确定找到解决方案的最佳方法。
  • @lc。您好,谢谢,我也遇到过,不过不是很明白。
  • 我诚挚的歉意。当我发表评论时,我完全想到了Directory.GetFiles。哦!

标签: .net vb.net file directory find


【解决方案1】:

您可以使用Directory.GetFiles (String, String, SearchOption)方法返回指定目录中与指定搜索模式匹配的文件名(包括其路径),使用一个值来确定是否搜索子目录。

例如:

If System.IO.Directory.GetFiles("C:\Users\You\Desktop", "file.txt", IO.SearchOption.AllDirectories).Length > 0 Then
    MsgBox("Found!")
Else
    MsgBox("Not found!")
End If

【讨论】:

  • 嗨,我实施了您的建议 Directory.GetFiles(@"C:\", "text.txt", SearchOption.AllDirectories) 它在预期的“@”表达式上给出了错误。对此有什么想法吗?谢谢!
  • @Tim : 去掉'@',只适用于C#代码。
  • @VisualVincent 您好,好像get目录无法进入if语句......“字符串的一维数组无法转换为布尔值”......请赐教。谢谢。
  • 此方法返回一个字符串数组,其中包含您的每个搜索结果(即 C:\Folder\test.txt;C:\Folder2\a\test.txt)。在我的答案中添加了示例。
  • @Tim : .Length 返回 多少 个符合条件的文件(名称为 test.txt 的文件)。 .Length > 0 检查是否至少找到了一个文件。
【解决方案2】:

试试这个

string curFile = @"c:\temp\test.txt";
Console.WriteLine(File.Exists(curFile) ? "File exists." : "File does not exist.");

或者看看这个链接

How to check if a file exists in a folder?

【讨论】: