String Scala—将字符串打印到文件的正确方法
将字符串打印到文件的正确方法是什么?当我尝试以我所知的标准方式进行时,即:String Scala—将字符串打印到文件的正确方法,string,scala,batch-file,file-io,io,String,Scala,Batch File,File Io,Io,将字符串打印到文件的正确方法是什么?当我尝试以我所知的标准方式进行时,即: 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)
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")
}
它似乎总是提前结束
埃努尔·恩克斯特
其中ENQt
之后的零件似乎有所不同。
(我是否声明o
对象或字符串并不重要。)
这很烦人,因为我想打印几个.dot字符串(Graphviz),然后将生成的.dot文件批处理为.pdf文件。然而,这种带有前缀的胡说八道迫使我打开每个.dot文件并手动删除它——这与批处理它们的目的背道而驰。这与Scala无关,特别是Java标准库的工作方式。执行
writeObject
时,您正在编写对象的序列化表示,以及JVM可以用来重新创建该对象的一组附加字节。如果您知道对象是一个字符串
,则强键入它(即,使用printToFile(o:String,n:String)
,您可以使用Files.write(path,o.getBytes,…
。否则,通常在JVM中可以使用o.toString.getBytes
,如果您想写入字符而不是字节,您应该选择*Writer
而不是*OutputStream
。在这种情况下(假设您有一个要写入的文件和一个要写入的字符串):
或者使用文件中面向字符的重载。写入:
Files.write(path, Collections.singletonList(string), ...)
Files.write(path, Collections.singletonList(string), ...)