I\'d like to use DirectoryStream with Project Reactor to list all the files in a directory.
My try is:
Path myDir = Paths.get(\"C:\\\\Users\\\\r.dacanal\
list(dir) on directories with large amount of files uses too much memory, there is a reason for newDirectoryStream
Subscribe repeatedly calls iterator(), but DirectoryStream has a check to ensure that the iterator must be null before assigning it's own
@Override
public Iterator<Path> iterator() {
if (!isOpen) {
throw new IllegalStateException("Directory stream is closed");
}
synchronized (this) {
if (iterator != null)
throw new IllegalStateException("Iterator already obtained");
iterator = new WindowsDirectoryIterator(firstName);
return iterator;
}
}
Although if you are using Java 8+ there is 0 reason to be using newDirectoryStream(dir)
as you can use list(dir)
to provide an actual Stream
The following should work
Path myDir = Paths.get("C:\\Users\\r.dacanal\\Documents\\Reply\\EDA\\logging-consumer\\input");
Stream<Path> directoryStream = Files.list(myDir);
Flux.fromStream(directoryStream).doOnNext(System.out::println).subscribe();