2016-03-07 77 views
0

我有一個每5秒刷新一次的Runnable線程。 此線程想要在具有時間和日期命名的文件上寫入。Java,FileWriter(文件,true)不可追加到文件

我檢查文件是否存在,我想在現有的文件上追加新的更新,並且在每分鐘更改時生成一個新文件,並且每5秒鐘執行一次。

的應用是基於JFrame的申請表

Runnable helloRunnable = new Runnable(){ 

    @override 
    public void run(){ 
     try{ 
      String FileName = Calendar.getInstance().get(Calendar.HOUR_OF_DAY) + Calendar.getInstance().get(Calendar.MINUTE) + ".txt"; 

      File f = new File(FileName); 
      FileWriter filewriter = new FileWriter(FileName); 
      BufferedWriter bufferedWriter = new BufferedWriter(filewriter); 

      FileWriter filewriter2 = new FileWriter(f, true); 
      BufferedWriter = bufferedWriter2 = new BufferedWriter(filewriter2); 

      if (f.isFile() && !f.isDirectory()){ 
       bufferedWriter2.write("Hello"); //this part doesn't append "Hello" in file (as i want) but overwrite the existing file 
       bufferedWriter2.close(); 
      }else{ 
       bufferedWriter.write("Hello"); //this part must overwrite the existing file so i think this work 
       bufferedWriter.close(); 
      } 

     } catch (IOExcception ex){ 
      Logger.getLogger(Gestionale.class.getName()).log(Level.SEVERE,nell,ex); 
     } 
    } 
}; 
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); 
SchedulateFuture<?> ez = executor.scheduleFixedRate(helloRunnable,0,5,TimeUnit.SECONDS); 

回答

2

上你總是實例化一個FileWriter是覆蓋現有文件。

FileWriter filewriter = new FileWriter(FileName); 

在此行之後,文件將始終爲空。
您必須將FileWriter對象的創建移動到if語句中。

+0

謝謝你的工作!我是java上的noob,我很抱歉^^ – user3464250