2013-12-23 25 views
0

假設我有一個TreeMap,並且我想爲一個鍵取所有值,使用這些值創建一個文件,將該文件傳遞給另一個進程循環,併爲每個映射執行此操作鍵,所以我總是必須使用相同的文件,但每次鍵時必須更換其內容。如何在處理後替換文件的內容

我要做的就是:

PrintWriter writeRatings = new PrintWriter("ratings.txt", "UTF-8"); 
TreeMap<Integer, ArrayList<Rating>> ratings = new TreeMap<Integer, ArrayList<Rating>>(); 
--> 
for(Integer clID:ratings.keySet()){ 
     ArrayList<Rating> ratingGroup = ratings.get(clID); 
      for(Rating r:ratingGroup){ 
       witer.println(r.toString()); 
      } 
} 
writer.flush(); 
writer.close(); 

有了這個,我得到一個文件,每個地圖密鑰的所有數據。你能建議我如何才能從文件中獲取當前密鑰的每次數據?

+0

如果您在進程之間傳遞數據,則應考慮使用管道或其他IPC方法。 – Iguananaut

回答

0

所以對我來說,工作是將此行包含在主要問題帖子中箭頭位置的for循環中:

PrintWriter writer = new PrintWriter(new FileWriter("filename")); 
1

如果你想使用相同的文件,只是追加行吧,用一個FileWriter將append模式設置爲true

PrintWriter writer = new PrintWriter(new FileWriter("filename", true)); 

這將追加行的文件,而不是在寫文件。這樣,不同的進程可以使用相同的文件,並繼續向文件中添加新的數據。

+0

謝謝你的回答。實際上,我寧願每次都用新數據替換整個內容。如果我只是將附加模式設置爲false,它會替換文檔內容嗎? – Omen

+0

如果是這種情況,則不需要撰寫文件。爲什麼你的代碼現在不能工作? –

+0

因爲我現在得到的是一個包含TreeMap中所有數據的文件。例如,我得到key = 1的所有數據,然後它爲key = 2等附加數據。我在尋找的是獲取key = 1的數據,然後用key = 1的值替換文件中的所有數據。 2等 – Omen