scala在处理文件时是否提供异步非阻塞IO?
我正在使用
scala 2.10,我想知道是否有一些包在处理文件时有异步IO?
我做了一些搜索这个主题,但大多数发现的例子如下 val file = new File(canonicalFilename) val bw = new BufferedWriter(new FileWriter(file)) bw.write(text) bw.close() 什么本质上基本上java.io包与阻止IO操作 – 写,读等.我也发现scala-io项目有这个意图,但似乎该项目是死去的最后活动2012年. 这种情况下的最佳做法是什么?有没有任何scala包或常见的方法是将java.io代码包装到Futures和Observables? 我的用例是来自Akka actor需要操作本地或远程文件系统上的文件.需要避免阻塞.还是有更好的选择吗? 为了澄清这一点而深受欢迎 解决方法
Scala没有为异步文件IO提供显式API,但普通的Java API在这些情况下使用是正确的(这实际上是一件好事,我们可以使用所有这些不错的API而无需任何包装!).您应该考虑使用自JDK7以来可用的
java.nio.channels.AsynchronousFileChannel,并使用底层系统异步调用文件IO.
Akka IO虽然没有在其核心提供文件IO,但它有一个由Dario Rexin开发的模块,它允许以非常简单的方式使用AsynchronousFileChannel和Akka IO.看看这个库来使用它:https://github.com/drexin/akka-io-file 在不久的将来,Akka将在其akka-streams模块中提供File IO.它可能作为一个外部库有一段时间,但我们还不确定在哪里放置它,因为它将要求用户至少有7个JDK,而Akka目前大多数支持JDK6.话虽如此,基于流的异步反压文件IO即将推出:-) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |