如何在Java中以非阻塞方式列出目录中的文件?

问题描述 投票:0回答:2

在目录中使用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). ..
}
java file nonblocking
2个回答
2
投票

如果只想从调用线程异步运行Files.list,则可以这样做,而无需查找“替代”文件API。


0
投票

磁盘的本质是它们不会立即产生信息。因此,可能的“非阻塞”解决方案是>

((a)同步阻止在单独的线程中执行,或

© www.soinside.com 2019 - 2024. All rights reserved.