Javaでファイルのディレクトリを再帰的に検索する
ここでは、ディレクトリ “/Users/mkyong/websites”とそのすべてのサブディレクトリから “post.php”という名前のファイルを再帰的に検索する方法を示します。
FileSearch.java
package com.mkyong; import java.io.File; import java.util.ArrayList; import java.util.List; public class FileSearch { private String fileNameToSearch; private List<String> result = new ArrayList<String>(); public String getFileNameToSearch() { return fileNameToSearch; } public void setFileNameToSearch(String fileNameToSearch) { this.fileNameToSearch = fileNameToSearch; } public List<String> getResult() { return result; } public static void main(String[]args) { FileSearch fileSearch = new FileSearch(); //try different directory and filename :) fileSearch.searchDirectory(new File("/Users/mkyong/websites"), "post.php"); int count = fileSearch.getResult().size(); if(count ==0){ System.out.println("\nNo result found!"); }else{ System.out.println("\nFound " + count + " result!\n"); for (String matched : fileSearch.getResult()){ System.out.println("Found : " + matched); } } } public void searchDirectory(File directory, String fileNameToSearch) { setFileNameToSearch(fileNameToSearch); if (directory.isDirectory()) { search(directory); } else { System.out.println(directory.getAbsoluteFile() + " is not a directory!"); } } private void search(File file) { if (file.isDirectory()) { System.out.println("Searching directory ... " + file.getAbsoluteFile()); //do you have permission to read this directory? if (file.canRead()) { for (File temp : file.listFiles()) { if (temp.isDirectory()) { search(temp); } else { if (getFileNameToSearch().equals(temp.getName().toLowerCase())) { result.add(temp.getAbsoluteFile().toString()); } } } } else { System.out.println(file.getAbsoluteFile() + "Permission Denied"); } } } }
出力
Searching directory .../Users/mkyong/websites Searching directory .../Users/mkyong/websites/wp-admin Searching directory .../Users/mkyong/websites/wp-admin/css Searching directory .../Users/mkyong/websites/wp-admin/images Searching directory .../Users/mkyong/websites/wp-admin/images/screenshots Searching directory .../Users/mkyong/websites/wp-admin/includes Searching directory .../Users/mkyong/websites/wp-admin/js Searching directory .../Users/mkyong/websites/wp-admin/maint Searching directory .../Users/mkyong/websites/wp-admin/network Searching directory .../Users/mkyong/websites/wp-admin/user Searching directory .../Users/mkyong/websites/wp-content Searching directory .../Users/mkyong/websites/wp-content/plugins//long list, omitted. Found 3 result! Found :/Users/mkyong/websites/wp-admin/includes/post.php Found :/Users/mkyong/websites/wp-admin/post.php Found :/Users/mkyong/websites/wp-includes/post.php
リンク://タグ/java/[java]
java.io