X-Git-Url: https://juplo.de/gitweb/?p=scannotation;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fscannotation%2Farchiveiterator%2FFileIterator.java;h=355af2df790eb2a78e431e0570122d54207baa3f;hp=aa3593b077df98a7de4e57b129a57c228c79435e;hb=f42e6e6e1662efe9a2fb23a325854c8327829c17;hpb=ef4ea99491aa96637db0c580e938724a68dd6e15 diff --git a/src/main/java/org/scannotation/archiveiterator/FileIterator.java b/src/main/java/org/scannotation/archiveiterator/FileIterator.java index aa3593b..355af2d 100644 --- a/src/main/java/org/scannotation/archiveiterator/FileIterator.java +++ b/src/main/java/org/scannotation/archiveiterator/FileIterator.java @@ -28,19 +28,26 @@ public class FileIterator implements StreamIterator throw new RuntimeException(e); } } - - protected static void create(List list, File dir, Filter filter) throws Exception + protected static void create(List list, File dir, Filter filter) throws Exception + { + create(list, dir, filter, dir.getCanonicalPath()); + } + protected static void create(List list, File dir, Filter filter, String prefix) throws Exception { File[] files = dir.listFiles(); for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { - create(list, files[i], filter); + create(list, files[i], filter, prefix); } else { - if (filter == null || filter.accepts(files[i].getAbsolutePath())) + String path = files[i].getCanonicalPath(); + String relativePath = path.substring(prefix.length() + 1); + if (File.separatorChar == '\\') + relativePath = relativePath.replace('\\', '/'); + if (filter == null || filter.accepts(relativePath)) { list.add(files[i]); }