【发布时间】:2022-02-05 10:42:13
【问题描述】:
我需要编写一些代码来管理 spring-webflux 服务的文件。第一个直觉是使用在常规应用程序中运行良好的文件/文件,但它们会阻塞。
所以,我用谷歌搜索了我想象的所有标准,但所有结果大多与上传/下载文件有关。
我的问题是 - 有没有办法在 spring-webflux 下以非阻塞方式管理文件(删除、复制、移动)?甚至是第 3 方库?
【问题讨论】:
标签: java spring file spring-webflux
我需要编写一些代码来管理 spring-webflux 服务的文件。第一个直觉是使用在常规应用程序中运行良好的文件/文件,但它们会阻塞。
所以,我用谷歌搜索了我想象的所有标准,但所有结果大多与上传/下载文件有关。
我的问题是 - 有没有办法在 spring-webflux 下以非阻塞方式管理文件(删除、复制、移动)?甚至是第 3 方库?
【问题讨论】:
标签: java spring file spring-webflux
Java NIO (New IO) 是 Java 的替代 IO API,意思是标准 Java IO 和 Java Networking API 的替代品。 NIO API 的一部分实际上是阻塞的——例如文件 API - 所以标签“非阻塞”会有点误导。
尽管如此,Java NIO 使您能够进行非阻塞 IO。例如,线程可以要求通道将数据读入缓冲区。当通道将数据读入缓冲区时,线程可以做其他事情。一旦数据被读入缓冲区,线程就可以继续处理它。将数据写入通道也是如此。
您可以在以下位置阅读更多信息:
【讨论】:
java.nio.file.Files.deleteIfExists 为 Inappropriate blocking method call,我认为可能有更好的方法来做到这一点。