指定されたフォルダの下にあるすべてのファイルをスキャンして、その絶対パスを出力します.
主要な考え方:
まず、指定されたパスのすべてのファイルを見つけます.
その後、これらのファイルが拡張子として使われているかどうかを判断します.もしそうであれば、探しているファイルのために絶対パスを出力します.そうでなければ、すべてのファイルを巡回するまで検索を続けます.
まず、指定されたパスのすべてのファイルを見つけます.
その後、これらのファイルが拡張子として使われているかどうかを判断します.もしそうであれば、探しているファイルのために絶対パスを出力します.そうでなければ、すべてのファイルを巡回するまで検索を続けます.
package InterView;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SearchFile {
public void find(String path, String reg) {
Pattern pat = Pattern.compile(reg);
File file = new File(path);
File[] arr = file.listFiles();
for (int i = 0; i < arr.length; i++) {
if (arr[i].isDirectory()) {//
find(arr[i].getAbsolutePath(), reg);
}
Matcher mat = pat.matcher(arr[i].getAbsolutePath());
// ,
if (mat.matches()) {
System.out.println(arr[i].getAbsolutePath());
}
}
}
public static List getFileList(File file) {
List result = new ArrayList();
if (!file.isDirectory()) {
System.out.println(file.getAbsolutePath());
result.add(file.getAbsolutePath());
} else {
File[] directoryList = file.listFiles(new FileFilter() {
public boolean accept(File file) {
if (file.isFile() && file.getName().indexOf("txt") > -1) {
return true;
} else {
return false;
}
}
});
for (int i = 0; i < directoryList.length; i++) {
result.add(directoryList[i].getPath());
}
}
return result;
}
public static void main(String[] args) throws IOException {
System.out.println(" :");
Scanner scanner=new Scanner(System.in);
String FILE_IN=scanner.next();
File f = new File(FILE_IN);
List list = new ArrayList();
list = getFileList(f);
System.out.println(list.size());
for (String l : list) {
System.out.println(l);
BufferedReader br = new BufferedReader(new FileReader(new File(l)));
String line = br.readLine();
byte[]b=line.getBytes("iso-8859-1");
String content=new String(b, "GBK");
System.out.println(content);
}
}
}