Java打印编写器

Java打印编写器,java,scala,sed,printwriter,bufferedwriter,Java,Scala,Sed,Printwriter,Bufferedwriter,我正在使用Java PrintWriter将Scala HashMap写入文件。这是我正在使用的代码: def writeToFileAsMapUsingPrintWriter(data: mutable.HashMap[String, Int], outputFilename: String, outputDirectoryPath: String): Unit = { val myfile = new File (outputDirectoryPath, outputFilename); v

我正在使用Java PrintWriter将Scala HashMap写入文件。这是我正在使用的代码:

def writeToFileAsMapUsingPrintWriter(data: mutable.HashMap[String, Int], outputFilename: String, outputDirectoryPath: String): Unit = {
val myfile = new File (outputDirectoryPath, outputFilename);
val printWriter = new PrintWriter(myfile);
for ((k, v) <- data) {
  printWriter.println(s"$k->$v")
}
printWriter.close ();}
def writetofileasmappusingprintWriter(数据:mutable.HashMap[String,Int],outputFilename:String,outputDirectoryPath:String):单位={
val myfile=新文件(outputDirectoryPath,outputFilename);
val printWriter=新的printWriter(myfile);
对于((k,v)821065
2000 DT RBS JJ1在JJ2年的百分之一百->10521306
PRP应为JJ1至VB JJ2英寸
->10521307
DT world POS JJ1营销员,MD负责JJ2工作->10521308

这就成了一个问题,因为当我读回这个文件时,我一行一行地读,我遇到了没有id的行,如上所述。有趣的是,它总是发生在相同的行上。有比这更长的行,但它们不会环绕

我尝试单独运行PrintWriter,只在HashMap中使用这5行,然后它在同一行中打印这些行,即不环绕。只有当我将11GB哈希映射馈送给它时,才会发生这种情况。我还尝试用打印替换println,但没有任何区别

printWriter.print(s“$k->$v\n”)

我可以使用sed命令修复文件中的这些行,但这只会修复这两行,不会修复其他行。另外,这只是一个临时修复

听起来像是某种记忆问题。以前有人遇到过吗

同时,我将尝试更多的尝试和错误方法。因此,接下来我将使用给定的flush()命令,使用BufferedWriter替换PrintWriter


只是运行一次我的程序需要12个小时,因此周转时间非常长。因此,请询问是否有人曾经遇到过这种情况。

您如何确定您的密钥实际上不包含换行符?这有时可能很难发现。我想这可能会解决此问题:

printWriter.println(s"${k.trim()}->$v")

我非常怀疑JVM或Java标准库是否存在任何内存问题或其他缺陷。

您有多确定您的密钥实际上不包含换行符?这有时可能很难发现。我猜这可能会解决它:

printWriter.println(s"${k.trim()}->$v")
我非常怀疑JVM或Java标准库是否存在内存问题或其他缺陷