package com.itranswarp.learnjava.visitor;
import java.io.File;
public interface Visitor {
void visitDir(File dir);
void visitFile(File file);
}
package com.itranswarp.learnjava.visitor;
import java.io.File;
public class JavaFileVisitor implements Visitor {
@Override
public void visitDir(File dir) {
System.out.println("Visit dir: " + dir);
}
@Override
public void visitFile(File file) {
if (file.getName().endsWith(".java")) {
System.out.println("Found java file: " + file);
}
}
}
package com.itranswarp.learnjava.visitor;
import java.io.File;
public class FileStructure {
private File path;
public FileStructure(File path) {
this.path = path;
}
public void handle(Visitor visitor) {
scan(path, visitor);
}
private void scan(File file, Visitor visitor) {
if (file.isDirectory()) {
visitor.visitDir(file);
for (File sub : file.listFiles()) {
scan(sub, visitor);
}
} else if (file.isFile()) {
visitor.visitFile(file);
}
}
}
package com.itranswarp.learnjava.visitor;
import java.io.File;
public class ClassFileCleanerVisitor implements Visitor {
@Override
public void visitDir(File dir) {
}
@Override
public void visitFile(File file) {
if (file.getName().endsWith(".class")) {
System.out.println("Will clean class file: " + file);
}
}
}
package com.itranswarp.learnjava;
import java.io.File;
import java.io.IOException;
import com.itranswarp.learnjava.visitor.ClassFileCleanerVisitor;
import com.itranswarp.learnjava.visitor.FileStructure;
import com.itranswarp.learnjava.visitor.JavaFileVisitor;
/**
* Learn Java from https://www.liaoxuefeng.com/
*
* @author liaoxuefeng
*/
public class Main {
public static void main(String[] args) throws IOException {
FileStructure fs = new FileStructure(new File("."));
fs.handle(new JavaFileVisitor());
fs.handle(new ClassFileCleanerVisitor());
}
}