當FileWriter沒有flush的時候,不寫入文件


我要實現將寫在Console上的內容保存在一個文件里,就是控制台記錄器

先看這個

public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        String text = s.nextLine();
        Class clazz;
        try {
            clazz = Class.forName("com.mingrisoft.RecordConsole");
            FileWriter f = new FileWriter("E:\\"+clazz.getSimpleName()+".txt");
            f.write(text);
            System.out.println("成功");
            
        } catch (ClassNotFoundException e1) {
            e1.printStackTrace();
        }catch (IOException e) {
            e.printStackTrace();
        }
        
        
        
    }

已走到"成功",而文件是空的

當我加上fileWriter.flush()后

public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        String text = s.nextLine();
        Class clazz;
        try {
            clazz = Class.forName("com.mingrisoft.RecordConsole");
            FileWriter f = new FileWriter("E:\\"+clazz.getSimpleName()+".txt");
            f.write(text);
            System.out.println("成功");
            f.flush();
        } catch (ClassNotFoundException e1) {
            e1.printStackTrace();
        }catch (IOException e) {
            e.printStackTrace();
        }
        
        
        
    }

說明flush()很重要

關於flush,如果此流已保存緩沖區中各種write()方法的任何字符,則立即將它們寫入預期目標,如果該目標是另一個字符或字節流則刷新,這就是為什么文件內容不是添加,而是只有一條最新運行的。

close()前會自動執行flush()

寫上close()也很重要


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM