Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String Scala—将字符串打印到文件的正确方法_String_Scala_Batch File_File Io_Io - Fatal编程技术网

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), ...)