在目录中使用Files包中的nio
在目录中列出“文件”很简单:
Stream<Path> paths = Files.list(Path.of("<folder>"))
但是对Files.list(..)
的呼叫被阻止。如何以非阻塞方式列出目录中的文件?
更新
通过“阻止”,我的意思是不像在反应式编程的上下文中那样阻止any线程。就我而言,我使用的是project reactor中的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). ..
}
如果只想从调用线程异步运行Files.list
,则可以这样做,而无需查找“替代”文件API。
磁盘的本质是它们不会立即产生信息。因此,可能的“非阻塞”解决方案是>
((a)同步阻止在单独的线程中执行,或