对于在Scala中读取文件,有
Source.fromFile("file.txt").mkString
Run Code Online (Sandbox Code Playgroud)
是否有一种等效和简洁的方法来将字符串写入文件?
大多数语言支持这样的东西.我最喜欢的是Groovy:
def f = new File("file.txt")
// Read
def s = f.text
// Write
f.text = "file contents"
Run Code Online (Sandbox Code Playgroud)
我想将代码用于从单行到短代码的程序.必须使用自己的库在这里没有意义.我希望有一种现代语言能让我方便地写一些文件.
有类似的帖子,但他们没有回答我的确切问题或专注于较旧的Scala版本.
例如:
Vla*_*eev 153
奇怪的是,没有人建议NIO.2操作(自Java 7以来可用):
import java.nio.file.{Paths, Files}
import java.nio.charset.StandardCharsets
Files.write(Paths.get("file.txt"), "file contents".getBytes(StandardCharsets.UTF_8))
Run Code Online (Sandbox Code Playgroud)
我认为这是迄今为止最简单,最简单,最惯用的方式,它不需要任何依赖Java本身.
Gar*_*all 81
这是一个使用reflect.io.file的简洁单行程序,这适用于Scala 2.12:
reflect.io.File("filename").writeAll("hello world")
Run Code Online (Sandbox Code Playgroud)
或者,如果您想使用Java库,您可以执行以下操作:
Some(new PrintWriter("filename")).foreach{p => p.write("hello world"); p.close}
Run Code Online (Sandbox Code Playgroud)
LRL*_*ena 69
简洁的一行:
import java.io.PrintWriter
new PrintWriter("filename") { write("file contents"); close }
Run Code Online (Sandbox Code Playgroud)
par*_*tic 40
如果你喜欢Groovy语法,你可以使用Pimp-My-Library设计模式将它带到Scala:
import java.io._
import scala.io._
class RichFile( file: File ) {
def text = Source.fromFile( file )(Codec.UTF8).mkString
def text_=( s: String ) {
val out = new PrintWriter( file , "UTF-8")
try{ out.print( s ) }
finally{ out.close }
}
}
object RichFile {
implicit def enrichFile( file: File ) = new RichFile( file )
}
Run Code Online (Sandbox Code Playgroud)
它将按预期工作:
scala> import RichFile.enrichFile
import RichFile.enrichFile
scala> val f = new File("/tmp/example.txt")
f: java.io.File = /tmp/example.txt
scala> f.text = "hello world"
scala> f.text
res1: String =
"hello world
Run Code Online (Sandbox Code Playgroud)
xie*_*fei 22
import sys.process._
"echo hello world" #> new java.io.File("/tmp/example.txt") !
Run Code Online (Sandbox Code Playgroud)
pat*_*rit 13
我写的一个微型库:https://github.com/pathikrit/better-files
file.write("Hi!")
Run Code Online (Sandbox Code Playgroud)
要么
file << "Hi!"
Run Code Online (Sandbox Code Playgroud)
Ryu*_*Gan 12
您可以轻松使用Apache File Utils.看看功能writeStringToFile.我们在项目中使用这个库.
这很简洁,我想:
scala> import java.io._
import java.io._
scala> val w = new BufferedWriter(new FileWriter("output.txt"))
w: java.io.BufferedWriter = java.io.BufferedWriter@44ba4f
scala> w.write("Alice\r\nBob\r\nCharlie\r\n")
scala> w.close()
Run Code Online (Sandbox Code Playgroud)
一个也有这种格式,既简洁又底层库写得很漂亮(参见源代码):
import scalax.io.Codec
import scalax.io.JavaConverters._
implicit val codec = Codec.UTF8
new java.io.File("hi-file.txt").asOutput.write("I'm a hi file! ... Really!")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
100480 次 |
| 最近记录: |