2012-11-12 87 views
1

這是我的問題:我需要將Interator寫入文件「random.txt」我能夠看到所有數據。數據是Store所在的地方,我可以用System.out.print看到它,但我的文件是空白的。我能夠創建文件,但不能寫入它。迭代器寫入File.txt Java

我正在閱讀我的文件。存儲在樹形圖中並嘗試寫入文本文件。 (我可以用Array來處理,沒有問題)但是這個帶迭代器的Map彈起了我的腦袋。

如果有人能幫我一個垃圾,我會感激。

我需要使用TreeMap和迭代器。

public static void main(String[] args) throws FileNotFoundException, IOException { 
    Map<String, String> Store = new TreeMap<>(); 

    Scanner text=new Scanner(System.in); 

    System.out.println("enter file: "); 


    //C:\Users\Alex\Desktop\Fruits\fruits.txt   

    String rap=text.next(); 

    File into = new File(rap); 

    try (Scanner in = new Scanner(into)) {     

     while (in.hasNext()){ 
      String name=in.next(); 
      String fruta = in.next(); 
      Integer num= Integer.parseInt(in.next()); 
      System.out.println(fruta+"\t"+name+"\t"+num); 

      if (Store.containsKey(fruta)){ 
       Store.put(name,Store.get(name)+fruta); 
      } 
      else{ 
       Store.put(name,fruta); 
      } 
     } 

     in.close(); 

    }                 

    System.out.println(); 

    // insert data to store MAP 
    Set top=Store.entrySet(); 
    Iterator it = top.iterator(); 

    // debugging 

    System.out.println(top); 

    // Creating file??????? 
    FileWriter fstream = new FileWriter("random.txt"); 

    //identify File to be write?????? 
    BufferedWriter out = new BufferedWriter(fstream); 

    //iterator Loop  
    while(it.hasNext()) { 

     Map.Entry m = (Map.Entry)it.next(); 
     String key = (String)m.getKey(); 
     String value = (String)m.getValue(); 

     //writing to file????? 
     out.write("\t "+key+"\t "+value); 

     // debugging 
     System.out.println(key +"\t"+ value); 
    }  

    System.out.println("File created successfully."); 
} 

回答

0

while循環(一個寫入文件)完成後,執行:

out.flush(); 
out.close(); 

簡短說明:在內存BufferedWriter緩衝區你寫的東西。當您調用write方法時,它不會立即寫入文件。一旦while循環完成並且要寫入文件的數據在緩衝存儲器中準備好,則應該撥打flush來執行寫入硬盤的實際。最後,您應該始終使用不再使用的BufferedWriter,以避免內存泄漏。

+0

完美謝謝你。那是兩行代碼的72小時頭部急救。 – user1819551

+0

哈哈哈......難道你不希望你的IDE警告你:「嘿,夥計,你沒有沖洗和關閉!」?很高興我能幫上忙 :) – ADTC