2013-06-01 32 views
0

我发现在scalax.io._文件的写入操作中的默认方式是“append”。 但是,如何使用Resource.fromFile对象进行类似于系统IO打开(..,WRITE)调用等数据写入操作的最佳和最短的方式是什么?我的想法是删除文件或使用寻求/修补API。但他们为了这样简单的操作而冗长。scalax.io._覆盖文件中数据的最佳方法

scala> def mk(s:String) = { val out: Output = Resource.fromFile("/tmp/data");out.write(s)} 
mk: (s: String)Unit 

scala> mk("XXXX") 
scala> mk("XXXX") 

bash# > ls -l /tmp/data 

-rw-rw-r-- 1 root root 8 Jun 1 16:27 /tmp/data 

回答

2

使用普通的旧输出流:

import scalax.io.Resource 
import scalax.io._ 
val out:Output = Resource.fromOutputStream(new java.io.FileOutputStream("/tmp/testFile")) 


out write "howdy" 
out write "bah" 

要小心,因为文件将在每次写入被改写。 见daily scala如何克服这一点,并为更多的例子

+0

在现有文件的解决方案不工作。它不能写入完整的文件,换句话说它不会截断。似乎文档不是最新的,或者我不明白作者的逻辑。 – Oleg

+0

是的,你是对的以前的解决方案没有工作。更新了我的答案。作为Scala-io的作者,在这里发布了一些非常详细的教程,您可能想要跟随每日Scala的链接。 – vitalii

+0

我们如何在写完后关闭文件?谢谢! – Learner

4

将文件从scalax.io.Seekable截断使用truncate零长度:

val output = Resource.fromFile("/tmp/data") 

    output truncate 0 
    output write "Bigger on the Inside" 
相关问题