輸出、輸入流同時打開,文本內容消失問題
阿新 • • 發佈:2017-09-11
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(); } } }
輸出、輸入流同時打開,文本內容消失問題