加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala在处理文件时是否提供异步非阻塞IO?

发布时间:2020-12-16 18:54:51 所属栏目:安全 来源:网络整理
导读:我正在使用 scala 2.10,我想知道是否有一些包在处理文件时有异步IO? 我做了一些搜索这个主题,但大多数发现的例子如下 val file = new File(canonicalFilename)val bw = new BufferedWriter(new FileWriter(file))bw.write(text)bw.close() 什么本质上基本上
我正在使用 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即将推出:-)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读