我正在使用Java PrintWriter將Scala HashMap寫入文件。這是我使用的代碼:Java打印作家環繞
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();}
現在的問題是這周圍的PrintWriter包裝一些線路輸出文件的下一個換行符。 如:
CC PRP VBP JJ1 to get JJ2 IN ->821065 2000 DT RBS JJ1 IN the hundred of JJ2 year->10521306 PRP be JJ1 TO VB JJ2 IN ->10521307 DT world POS JJ1 marketer , MD lead JJ2 effort->10521308
這將成爲,因爲當我讀到這個文件後面一個問題,我去逐行,和我遇到行沒有ID,如上面。而有趣的部分是它只發生在同一條線上。有比這更長的線條,但他們不環繞。
我試圖獨立運轉的PrintWriter只是與這些5條線在HashMap,那麼它打印在同一行即這些線不纏繞。它只有當我餵我的11GB哈希映射,這發生。我也嘗試用print替換println,但沒有什麼區別。
printWriter.print(s"$k->$v\n")
我也許可以進去與SED命令修復文件中這些行,但只能解決這些2,不會修復等。另外它只是一個臨時修復。
聽起來像某種內存問題給我。有沒有人遇到過這個?
同時,我會嘗試更多的試錯法。所以接下來我將用BufferedWriter替換PrintWriter,使用flush()命令,如here等
只需要花費12小時來運行我的程序一次,所以轉身時間是巨大的。因此,以防萬一有人遇到過這種情況。