Apply patch for bugs 2030388 and 3134533: FileProtocolIteratorFactory creates File...
[scannotation] / src / main / java / org / scannotation / archiveiterator / FileProtocolIteratorFactory.java
index a8c0a40..5a5979b 100644 (file)
@@ -2,6 +2,7 @@ package org.scannotation.archiveiterator;
 
 import java.io.File;
 import java.io.IOException;
+import java.net.URISyntaxException;
 import java.net.URL;
 
 /**
@@ -13,8 +14,18 @@ public class FileProtocolIteratorFactory implements DirectoryIteratorFactory
 
    public StreamIterator create(URL url, Filter filter) throws IOException
    {
-      File f = new File(url.getPath());
-      if (f.isDirectory())
+       // See http://weblogs.java.net/blog/2007/04/25/how-convert-javaneturl-javaiofile
+       File f;
+       try
+       {
+           f = new File(url.toURI());
+       }
+       catch (URISyntaxException e)
+       {
+           f = new File(url.getPath());
+       }
+
+       if (f.isDirectory())
       {
          return new FileIterator(f, filter);
       }