< 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 >