1. 程式人生 > >輸出、輸入流同時打開,文本內容消失問題

輸出、輸入流同時打開,文本內容消失問題

stream 清空 string args lose cnblogs 選擇 put int

對某個文本文件同時打開輸出及輸入流時,如果你使用API不慎,會發現輸出流輸出為空,原因如下:

public static void main(String[] args) {
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            File file = new File("D://test.txt");

            fis = new FileInputStream(file);
            /**
             * new FileOutputStream(file)
             * new FileOutputStream(file, true)   追加模式
             * 如果不選擇追加模式,就會清空原文件內容,類似的有FileWriter(內部維護的是FileOutputStream)等。。。
             
*/ fos = new FileOutputStream(file); byte[] b = new byte[1024]; int index = 0; while ((index = fis.read(b)) >= 0) { System.out.println(new String(b, 0, index)); } // "\r\n" 為換行符 fos.write("\r\ntest".getBytes()); }
catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (fis != null && fos != null) { fos.close(); fis.close(); } }
catch (IOException e) { e.printStackTrace(); } } }

輸出、輸入流同時打開,文本內容消失問題