OnJava8-Examples/com/mindviewinc/util/ProcessFiles.java
Bruce Eckel 49edcc8b17 reorg
2015-06-15 17:47:35 -07:00

50 lines
1.4 KiB
Java

//: com/mindviewinc/util/ProcessFiles.java
// ©2015 MindView LLC: see Copyright.txt
// {ValidateByHand}
package com.mindviewinc.util;
import java.io.*;
public class ProcessFiles {
public interface Strategy {
void process(File file);
}
private Strategy strategy;
private String ext;
public ProcessFiles(Strategy strategy, String ext) {
this.strategy = strategy;
this.ext = ext;
}
public void start(String[] args) {
try {
if(args.length == 0)
processDirectoryTree(new File("."));
else
for(String arg : args) {
File fileArg = new File(arg);
if(fileArg.isDirectory())
processDirectoryTree(fileArg);
else {
// Allow user to leave off extension:
if(!arg.endsWith("." + ext))
arg += "." + ext;
strategy.process(
new File(arg).getCanonicalFile());
}
}
} catch(IOException e) {
throw new RuntimeException(e);
}
}
public void
processDirectoryTree(File root) throws IOException {
for(File file : Directory.walk(
root.getAbsolutePath(), ".*\\." + ext))
strategy.process(file.getCanonicalFile());
}
// Demonstration of how to use it:
public static void main(String[] args) {
new ProcessFiles(file -> System.out.println(file),
"java").start(args);
}
} /* Output: (Execute to see) *///:~