使用Java中的nio
包中的Files可以轻松地列出目录中的“文件”:
Stream<Path> paths = Files.list(Path.of("<folder>"))
然而调用Files.list(..)
是阻塞的。如何以非阻塞方式列出目录中的文件?
更新
在“阻塞”的意义下,指的是不会阻止任何线程,这是响应式编程的上下文。在我的情况下,我正在使用来自 Spring 的项目反应器,并且我定义了一个像这样的方法:
public Flux<String> doStuffWithFilesInDirectory(String dir) {
// Intellij complains that the call to "Files.list(..)" is inappropriate since it's a blocking call
var fileStream = Files.list(Path.of(dir));
return Flux.fromStream(fileStream). ..
}