【问题标题】:Java searching file name from the one folderJava从一个文件夹中搜索文件名
【发布时间】:2012-10-24 08:43:31
【问题描述】:

我正在学习 Java,但我不太确定搜索文件的方法。我想构建返回文件名的函数(文件名应以star开头并以.txt结尾)

例如,在文件夹中,我们有 Java 源文件和一些文件。例如文件:

  • 1.txt
  • 2.txt
  • 4.txt
  • start.txt
  • star.txt
  • onstart.txt
  • starton.txt
  • myjava.java

那我想得到start.txt, star.txt & starton.txt

我一直在寻找FilenameFilter,但我找不到找到文件的好方法。有谁知道查找文件的方法吗?

【问题讨论】:

    标签: java filtering filenames


    【解决方案1】:
    // You'll need this import: import java.io.File;
    
    File folder = new File("C:/Folder_Location");
    // gets you the list of files at this folder
    File[] listOfFiles = folder.listFiles();
    // loop through each of the files looking for filenames that match
    for(int i = 0; i < listOfFile.length; i++){
        String filename = listOfFiles[i].getName();
        if(filename.startsWith("Stuff") && listOfFiles[i].getName().endsWith("OtherStuff")){
            // do something with the filename
        }
    }
    

    【讨论】:

    • 如上所述,File(".") 是当前目录的快捷方式。
    【解决方案2】:

    可能最简单的方法是简单地使用File#listFiles(FileFilter),类似

    File[] fileList = new File("/path/to/search").listFiles(new FileFilter() {
        @Override
        public boolean accept(File pathname) {
            return pathname.getName().endsWith(".txt");
        }
    });
    

    【讨论】:

    • 谢谢 反正我不需要使用路径吗?比如“/path/to/search”
    • 好吧,我取决于。文件是 OS 文件系统上路径的抽象概念(指向文件或目录)。您可以使用 File("."),但这只是当前目录的快捷方式,或者您可以使用相对路径
    【解决方案3】:

    File#getName() should return aString`,然后使用:

    filename.startsWith(...);
    filename.endsWith(...);
    

    【讨论】:

      猜你喜欢
      • 2014-07-28
      • 1970-01-01
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-11
      • 2016-07-25
      • 1970-01-01
      相关资源
      最近更新 更多