Scala - 将字符串打印到文件的正确方法

Use*_*291 0 string io file-io scala batch-file

打印字符串(只有字符串)到文件的正确方法是什么?当我尝试以我所知的标准方式进行时,即:

def printToFile(o:Object,n:String) = try{
  val pathToOutput = "..\\some\\parent\\directory\\"
  val path = Paths.get(pathToOutput + n)

  val b = new ByteArrayOutputStream()
  val os = new ObjectOutputStream(b)
  os.writeObject(o)

  Files.write(path, b.toByteArray,
    StandardOpenOption.CREATE,
    StandardOpenOption.TRUNCATE_EXISTING)
}catch{
  case _:Exception => println("failed to write")
}
Run Code Online (Sandbox Code Playgroud)

它似乎总是在前面

’NULENQtSTXT

后面 的部分ENQt似乎有所不同.(如果我声明o一个Object或String,则无关紧要.)

这非常烦人,因为我想打印几个.dot-Strings(Graphviz),然后将生成的.dot文件批量处理为.pdf文件.然而,前置的废话迫使我打开每个.dot文件并手动删除它 - 这种方法违背了批量处理它们的目的.

Mar*_*mou 5

这与Scala无关,它与Java标准库的工作方式无关.当您执行a时,writeObject您正在编写Object的序列化表示,以及JVM可用于重新创建该对象的一堆额外字节.如果您知道对象是a String,那么强类型(即使用printToFile(o:String,n:String)并且您可以使用Files.write(path, o.getBytes, ....否则您可以使用o.toString.getBytes.