< prev index next >

src/java.base/share/classes/jdk/internal/jrtfs/JrtDirectoryStream.java

Print this page

        

@@ -37,38 +37,25 @@
  * DirectoryStream implementation for jrt file system implementations.
  */
 final class JrtDirectoryStream implements DirectoryStream<Path> {
 
     private final AbstractJrtFileSystem jrtfs;
-    private final byte[] path;
-    // prefix to be used for children of this directory
-    // so that child path are reported relatively (if needed)
-    private final String childPrefix;
+    private final AbstractJrtPath dir;
     private final DirectoryStream.Filter<? super Path> filter;
     private volatile boolean isClosed;
     private volatile Iterator<Path> itr;
 
     JrtDirectoryStream(AbstractJrtPath jrtPath,
             DirectoryStream.Filter<? super java.nio.file.Path> filter)
             throws IOException {
         this.jrtfs = jrtPath.getFileSystem();
-        this.path = jrtPath.getResolvedPath();
+        this.dir = jrtPath;
         // sanity check
-        if (!jrtfs.isDirectory(path, true)) {
+        if (!jrtfs.isDirectory(dir, true)) {
             throw new NotDirectoryException(jrtPath.toString());
         }
 
-        // absolute path and does not have funky chars in front like /./java.base
-        if (jrtPath.isAbsolute() && (path.length == jrtPath.getPathLength())) {
-            childPrefix = null;
-        } else {
-            // cases where directory content needs to modified with prefix
-            // like ./java.base, /./java.base, java.base and so on.
-            String dirName = jrtPath.toString();
-            int idx = dirName.indexOf(JrtFileSystem.getString(path).substring(1));
-            childPrefix = dirName.substring(0, idx);
-        }
         this.filter = filter;
     }
 
     @Override
     public synchronized Iterator<Path> iterator() {

@@ -78,11 +65,11 @@
         if (itr != null) {
             throw new IllegalStateException("Iterator has already been returned");
         }
 
         try {
-            itr = jrtfs.iteratorOf(path, childPrefix);
+            itr = jrtfs.iteratorOf(dir);
         } catch (IOException e) {
             throw new IllegalStateException(e);
         }
         return new Iterator<Path>() {
             /*
< prev index next >