2012-06-07 36 views
0

嗨,我有3個類,第一和第二類是計算,第三個是我將數據從前兩個類保存到文本文件。 我試圖重用我的方法,它使用FileWriter和BufferedWriter將第一和第二類的計算值寫入文本文件。如何用Java覆蓋以前的FileWriter內容

所以我有這樣的事情:
1)第一類做計算
2),然後使用writeDetected第三類將其保存在文本文件中
3)第二類不計算
4),然後使用第3類再次使用writeDetected

除了當我想保存我在第二課中完成的計算時,一切都在工作。文本文件中的內容包含以前的(第一類計算)+第二類計算。我想要的是一個文件,它具有第一類計算和第二類計算的另一個文件。任何想法,我應該如何做到這一點?

編輯:

只是爲了說明這一點:
它應該是這個樣子
1級{1,2,3,4}
2級{5,6,7,8}


我目前所面對的是
1級{1,2,3,4}
類{2} 1,2,3,4,5,6,7,8

THI s是我的代碼:

public void writeDetected(){ 
    Scanner getFileName = new Scanner(System.in); 

    //Enter file name here for first class then after calculation of 
    // 2nd class enter another file name 
    String getInp = getFileName.nextLine(); 
    try{ 
     FileWriter theFile = new FileWriter(getInp); 
     BufferedWriter readBuf = new BufferedWriter (theFile); 
     String convDoubleToString; 

     for (Double getVal: detected){ 
      convDoubleToString = getVal.toString(); 

      readBuf.write(convDoubleToString); 
      readBuf.newLine(); 
     } 

     readBuf.close(); 

    } 

    catch (IOException e){ 
     System.out.println(e); 
    } 
} 
+0

這功課嗎? –

+0

重要嗎?但爲了滿足你的好奇心,它不僅僅是學習如何用java編程。 – dimas

+0

是的,這很重要,因爲人們試圖以不同的方式回答作業問題以幫助學員學習。在你的情況下,如果你想寫入2個不同的文件,那麼你應該使用2個不同的文件名。另外,你應該總是關閉最終塊中的流資源。 – jtahlborn

回答

1

試試這個,

發送pathcalling method as ArgumentParameters of the calledmethod,這樣你可以寫你的文件內容,以任何你想要的文件(Here調用的方法將是writeMyFile(String path)

如:

public void writeMyFile(String path){ 

Scanner scan = new Scanner(System.in); 

File f = new File(path); 

FileWriter fr = new FileWriter(f); 

BufferedWriter br = new BufferedWriter(fr); 

while(true){ // its a continuos loop, so better handle it the way u want it 

br.write(new Scanner(System.in).nextLine()); 

} 
} 
+0

嗨tnx回覆,只是有一個問題什麼是(b)在這裏?那是假設是(br)? – dimas

+0

布爾isDone在這裏的意義是什麼?我不認爲它是在你給我的樣本中使用的。 – dimas

+0

對不起,它是循環控制機制的一部分......它是我的命令行程序,「b」的值控制while循環。我忘了刪除它,因爲我從我的代碼庫中取出了一小段代碼。現在我已經刪除它..所以我希望現在它可以 –

0

我會向該方法添加一個字符串輸入變量並傳入要寫入的文件名。那或者你可以創建文件對象並將它們作爲輸入參數傳遞。我自己使用了一個字符串,只是通過文件名來寫入。

+0

嗨洛根感謝您的答覆,我沒有與每個類相關的文件類的命名問題。但我只需要擺脫先前編寫的類的內容,因爲我使用相同的方法來編寫它們。我用樣本編輯了我的問題,使其更清晰。 – dimas

+0

也許在writedetected完成後,您需要清除檢測出來。這是一種類型的收集?既然這就是你的for循環用來寫的東西,問題是它仍然包含第一類的內容。寫入完成後,嘗試清除檢測到的內容。 – Logan

+0

Detected是一個ArrayList 和是的,我清除了以前的值之前,我用相同的寫法保存類2.所以我懷疑它與FileWriter或BufferedWriter有關,以及如何清除緩存或保存的臨時文件。我在關於flush()和close()的java文檔中讀到它將這個臨時文件保存到內存中。但我可能是錯的,所以希望對此有任何想法。 – dimas