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文件并手动删除它 - 这种方法违背了批量处理它们的目的.
这与Scala无关,它与Java标准库的工作方式无关.当您执行a时,writeObject您正在编写Object的序列化表示,以及JVM可用于重新创建该对象的一堆额外字节.如果您知道对象是a String,那么强类型(即使用printToFile(o:String,n:String)并且您可以使用Files.write(path, o.getBytes, ....否则您可以使用o.toString.getBytes.