从getAbsolutePath()方法中提取FileName

时间:2019-03-07 13:01:43

标签: java

我正在使用此网站中的一种方法来读取系统硬盘驱动器上存在的所有文件,它工作正常,但是我需要在搜索时检查某个文件是否存在。 简而言之,这里是读取文件的行代码

parseAllFiles(f.getAbsolutePath());

如何将这种方法的输出分配给字符串,这样我就可以在该字符串中搜索所需的文件,或者有什么方法可以添加/更改此语句以直接在字符串中获取文件名?

 public static void parseAllFiles(String parentDirectory){   
  File[] filesInDirectory = new File(parentDirectory).listFiles();  
   if(filesInDirectory != null){  
        for(File f : filesInDirectory){   
            if(f.isDirectory()){   
               parseAllFiles(f.getAbsolutePath());  // get full path 

            }   
            System.out.println("Current File -> " + f);             
        }        
   }

}

1 个答案:

答案 0 :(得分:0)

使用对象而非字符串,因为它们倾向于提供字符串不提供的有用功能。在您的情况下,将File对象或Path对象传递给递归方法。我认为您是从字符串开始的,所以让您的公共方法接受字符串并构造第一个对象。

public static void parseAllFiles(String parentDirectory) {
    parseAllFiles(new File(parentDirectory));
}

private static void parseAllFiles(File dir) {
    File[] filesInDirectory = dir.listFiles();
    if (filesInDirectory != null) {
        for (File f : filesInDirectory) {
            String fileName = f.getName();
            String fullPathName = f.getAbsolutePath();
            System.out.println("Current File -> " + fileName);
            System.out.println("Current path -> " + fullPathName);

            if (f.isDirectory()) {
                parseAllFiles(f);
            }
        }
    }
}

我不知道您是否只需要文件名或文件的完整路径名,但是代码显示了如何将每个文件提取为字符串。然后,您可以在这两个字符串中搜索所需的内容。

自Java 7起的java.nio

我通常使用java.nio.file进行文件系统操作。在日常工作中,我发现与老File类一起工作并不比它更好,但是它确实提供了老类没有的很多选择。 @Shahar Rotshtein在评论中提到了FileVisitor的{​​{1}}接口。根据您的确切要求java.nio.file,通过自己的Files.walkFileTree可能是您的最佳选择。我对您的实际需求还不够了解,无法提供代码示例。

链接