【发布时间】:2015-01-01 21:23:44
【问题描述】:
我正在使用 scala 2.10,我想知道是否有一些包在处理文件时具有异步 IO?
我对这个主题进行了一些搜索,但大部分都找到了以下示例
val file = new File(canonicalFilename)
val bw = new BufferedWriter(new FileWriter(file))
bw.write(text)
bw.close()
本质上是具有阻塞 IO 操作的 java.io 包 - 写入、读取等。我还发现 scala-io 项目有此意图,但似乎该项目是 2012 年最后的活动。
在这种情况下,最佳做法是什么?是否有任何 scala 包或将 java.io 代码包装到 Futures 和 Observables 的常用方法?
我的用例来自一个 Akka actor,需要在本地或远程文件系统上操作文件。需要避免阻塞。还是有更好的选择?
感谢您澄清这一点
【问题讨论】:
-
您已经在使用 Akka - 发送消息。
-
是的,发送消息并让另一个演员来做。
-
这将是异步的,但仍会阻塞。
-
所有 IO 在某处阻塞。只是让它不阻塞执行线程的问题。
-
为了说明我的观点——阅读the documentation for
AsynchronousFileChannel——它所做的只是将任务提交给ExecutorService。这正是向另一个参与者发送消息会做的事情......
标签: scala akka reactive-programming