【问题标题】:Java, FileWriter(file, true) dosen't append on fileJava,FileWriter(file,true)不附加在文件上
【发布时间】:2016-03-07 13:18:57
【问题描述】:

我有一个 Runnable 线程,每 5 秒刷新一次。 该线程要写入以时间和日期命名的文件。

我检查文件是否存在,我想在现有文件上附加新的更新,当微小的变化时,生成一个新文件并每 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);

【问题讨论】:

    标签: java multithreading swing computer-vision netbeans-8


    【解决方案1】:

    您总是在实例化覆盖现有文件的FileWriter

    FileWriter filewriter = new FileWriter(FileName);
    

    在此行之后,文件将始终为空。
    您必须将 FileWriter 对象的创建移到 if 语句中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-30
      • 2011-08-02
      • 2019-10-31
      • 2018-08-23
      • 2010-11-16
      • 2019-10-30
      相关资源
      最近更新 更多