Java IO操作常犯的錯
阿新 • • 發佈:2018-11-08
讀寫資料時的坑
-
如果檔案比較大時,一次性讀取可能會出現記憶體溢位的情況
byte[] bytes = new bytes[is.available()]; is.read(bytes);
-
迴圈讀取,寫出時可能會出現有重複位元組
byte[] bytes = new bytes[1024]; int len; while((len = is.read(bytes))!=-1){ // os.write(bytes); 可能出現重複位元組 os.write(bytes,0,len); }
-
使用
BufferedInputStream(InputStream)/BufferedOutputStream(OutputStream)
readLine()
和newLine()
方法int len; while((len = bis.read())!=-1){ bos.write(len); } // 一定要關閉流或者重新整理流,因為如果不執行close或者flush,那麼拷貝的資料可能要小一點。 // 為什麼會小?因為緩衝區中可能還有資料沒有重新整理到磁碟。 bis.close(); bos.close();
-
位元組流讀寫中文可能出現亂碼
一箇中文字是兩個位元組,假如使用
read()
OutputStream os = new FileOutputStream("D://test.txt"); os.write("我讀書少 你不要騙我".getBytes());
-
字元流不能拷貝非純文字,因為讀取的時候會將位元組轉成字元,在轉換過程中,找不到的字元就會用“?”來代替