代码之家  ›  专栏  ›  技术社区  ›  mafu

如何检索目录中的所有文件名?

  •  15
  • mafu  · 技术社区  · 15 年前

    如何检索目录中与模式匹配的所有文件名?我试过了,但它返回的是完整路径而不是文件名。

    Directory.GetFiles (path, "*.txt")
    

    我必须手动从结果中裁剪目录路径吗?这很容易,但也许有一个更简单的解决办法:)

    7 回复  |  直到 15 年前
        1
  •  34
  •   Grif    15 年前
    foreach (string s in Directory.GetFiles(path, "*.txt").Select(Path.GetFileName))
           Console.WriteLine(s);
    
        2
  •  12
  •   Michael Shimmins    15 年前

    假设您使用的是C#,那么DirectoryInfo类将对您更有用:

    DirectoryInfo directory = new DirectoryInfo(path);
    FileInfo[] files = directory.GetFiles("*.txt");
    

    FileInfo类包含一个属性 Name 返回不带路径的名称。

    看到了吗 the DirectoryInfo documentation the FileInfo documentation 更多信息。

        3
  •  8
  •   Steven Sudit    15 年前

    Directory.EnumerateFiles :

    var fileNames = Directory.EnumerateFiles(@"\", "*.*", SearchOption.AllDirectories);
    
        4
  •  3
  •   Steven Sudit    15 年前

    使用 Path.GetFileName 使用您的代码:

    foreach(var file in Directory.GetFiles(path, "*.txt"))
    {
       Console.WriteLine(Path.GetFileName(file));
    }
    

    另一种解决方案:

    DirectoryInfo dir = new DirectoryInfo(path);
    var files = dir.GetFiles("*.txt");
    foreach(var file in files)
    {
       Console.WriteLine(file.Name);
    }
    
        5
  •  1
  •   Genady Sergeev    15 年前

        DirectoryInfo info  = new DirectoryInfo("C:\Test");
        FileInfo[] files = info.GetFiles("*.txt");
    
        foreach(FileInfo file in files)
        {
            string fileName = file.Name;
        }
    
        6
  •  1
  •   Grisha Weintraub    13 年前
    var filenames = Directory.GetFiles(@"C:\\Images", "*.jpg").
                    Select(filename => Path.GetFileNameWithoutExtension(filename)).
                    ToArray();
    

    如果这是你想要的,试试这个

        7
  •  0
  •   Metin Atalay    8 年前

    试试这个

    IEnumerable<string> fileNames =
                    Directory.GetFiles(@"\\srvktfs1\Metin Atalay\", "*.dll")
                        .Select(Path.GetFileNameWithoutExtension);