Skip to content

Instantly share code, notes, and snippets.

@boyter
Last active December 19, 2017 23:43
Show Gist options
  • Save boyter/5b5d5fc9ceec3f2ab78b163fbb27a30f to your computer and use it in GitHub Desktop.
Save boyter/5b5d5fc9ceec3f2ab78b163fbb27a30f to your computer and use it in GitHub Desktop.
Identify Path Walking Issues in Java
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.EnumSet;
public class Main {
public static void main(String argv[]) {
Main main = new Main();
if (argv.length != 1) {
main.printUsage();
return;
}
try {
Path path = Paths.get(argv[0]);
main.walkPath(path);
} catch (Exception e) {
main.printUsage();
}
}
public void printUsage() {
System.out.println("Usage: java Main TARGETDIRECTORY");
}
public boolean ignoreFiles(String fileParent) {
if (fileParent.endsWith("/.git") || fileParent.contains("/.git/") || fileParent.contains(".git/") || fileParent.equals(".git")) {
return true;
}
if (fileParent.endsWith("/.svn") || fileParent.contains("/.svn/")) {
return true;
}
return false;
}
public void walkPath(Path path) {
try {
Files.walkFileTree(path, EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
Main main = new Main();
if (main.ignoreFiles(file.toString())) {
return FileVisitResult.CONTINUE;
}
System.out.println(file);
return FileVisitResult.CONTINUE;
}
});
} catch (IOException e) {
e.printStackTrace();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment