An active use of a class:The invocation of a constructor on a new instance of the class
1》写一个类。
2》new ():让这个类活(动)起来,哪么现在这个类就是对象(有生命周期)了,
例子:取一个目录下的所有文件+目录
用了递归:当是目录时,必须进去把这目录下的所有文件+目录取出来。
重复执行。
测试例子:
1、当前目录结构
2、取从当前目录开始下的所有文件和目录。
package net.mindview.util;
import java.util.regex.*;
import java.io.*;
import java.util.*;
public final class Directory {
// A two-tuple for returning a pair of objects:
//这个对象功能:存放当前目录下的文件和目录
public static class TreeInfo implements Iterable<File> {
public List<File> files = new ArrayList<File>();
public List<File> dirs = new ArrayList<File>();
// The default iterable element is the file list:
public Iterator<File> iterator() {
return files.iterator();
}
//把递归返回的目录和文件存入当前TreeInfo 的目录和文件中
void addAll(TreeInfo other) {
files.addAll(other.files);
dirs.addAll(other.dirs);
}
public String toString() {
return "dirs: " + PPrint.pformat(dirs) +
"\n\nfiles: " + PPrint.pformat(files);
}
}
public static TreeInfo walk(String start) {
return recurseDirs(new File(start), ".*");
}
//从当前目录开始,循环取出所有文件和目录。
static TreeInfo recurseDirs(File startDir, String regex){
TreeInfo result = new TreeInfo();
for(File item : startDir.listFiles()) {
if(item.isDirectory()) {
result.dirs.add(item);
result.addAll(recurseDirs(item, regex));
} else // Regular file
if(item.getName().matches(regex))
result.files.add(item);
}
return result;
}
} ///:~
import net.mindview.util.Directory;
import static net.mindview.util.Print.*;
public class DirectoryDemo {
public static void main(String[] args) {
// All directories:
print(Directory.walk("D:\\javaSoftResource\\javaThinkSeeTest").dirs);
}
}