indicate directoryの配下のfile/directoryを表示するプログラム
Fileはfile path , directory pathをmanageする
listFiles()は指定ファイルの配下のファイルをarrayとして返す
listFiles()にFileFilterを指定するとfilterをかけた結果を返す
public class Outer {
public static void main(String[] args) {
File f = new File("C:\\dirtest");
FileFilter ff = pf -> {
if(pf.isDirectory()) return true;
if(pf.getName().endsWith(".java")) return true;
return false;
};
method(f, "",null);
System.out.println("---------------------------------");
method(f, "",ff);
File f1 = new File("C:\\dirtest\\testmakefile.txt");
method2(f1);
File f2 = new File("C:\\dirtest\\test3dir");
method3(f2);
}
static void method(File pf, String indent, FileFilter ff) {
//System.out.println(pf.getAbsolutePath());
class SampleClass {
File[] method() {
if(ff == null) return pf.listFiles();
else return pf.listFiles(ff);
}
}
File[] fs = new SampleClass().method();
for(File f:fs) {
System.out.print(indent + f.getName());
if(f.isDirectory()) System.out.println(" is directory.");
else System.out.println(" is file");
if(f.isDirectory()) method(f, indent + " ",ff);
}
}
static void method2(File pf) {
try {
if(!pf.exists()) pf.createNewFile();
} catch (IOException ex) {
ex.printStackTrace();
}
}
static void method3(File pf) {
if(!pf.exists()) pf.mkdir();
}
test2dir is directory.
subdir is directory.
sub2dir is directory.
testfile1.txt is file
testfile2.txt is file
testfile1.txt is file
testfile2.txt is file
testfile1.txt is file
testfile2.txt is file
testfile3.java is file
test3dir is directory.
testdir is directory.
subdir is directory.
sub2dir is directory.
testfile1.txt is file
testfile2.txt is file
testfile1.txt is file
testfile2.txt is file
testfile1.txt is file
testfile2.txt is file
testmakefile.txt is file
---------------------------------
test2dir is directory.
subdir is directory.
sub2dir is directory.
testfile3.java is file
test3dir is directory.
testdir is directory.
subdir is directory.
sub2dir is directory.