我正在阅读非阻塞 I/O,因为我正在使用 Akka 和 Play,如果在这种情况下可以避免的话,阻塞是一个坏主意,但我不能让它与我的用例:
- 通过网络获取文件(这里存在使用 nio 的替代方案,但现在我使用的是 URL.openStream)
- 使用 BouncyCastle 解密文件(PGP)(这里我仅限于 InputStream)
- 使用标准 Java GZIP 解压文件(仅限 InputStream)
- 读取文件中的每一行,这是一个基于位置的平面文件,并转换为案例类(这里我对读取方法没有限制,现在是 scalax.io.Resource)
- 坚持使用 Slick/JDBC(不确定 JDBC 是否阻塞)
它现在基本上一直在使用 InputStreams。但是,为了学习和提高我的理解,我正在研究是否可以使用非阻塞 IO 来做到这一点。
我基本上想通过管道流式传输文件,在管道中应用上面的每个步骤,最后在不阻塞的情况下持久化数据。
如果需要代码,我可以轻松提供,但我正在寻找一般级别的解决方案:当我依赖使用 java.io 的库时该怎么办?