50 lines
1.4 KiB
Java
50 lines
1.4 KiB
Java
|
//: com/mindviewinc/util/ProcessFiles.java
|
|||
|
// <20>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) *///:~
|