標籤:color 計算 file 目標 code div ring new 內容
/*Key:【入】指的是到記憶體裡,【出】指的是到記憶體外*/import java.io.*;public class MyReadFile{ public static void main(String[] args){ try{ /*第一步,定位元據源&&目標檔案*/ File f = new File("D:/lab_2/test.txt"); File f2 = new File("D:/lab_2/test2.txt"); /*第二步,建立輸入&&輸出管道*/ FileInputStream fis = new FileInputStream(f); FileOutputStream fos = new FileOutputStream(f2); /*第三步,操作管道*/ for(;fis.available() > 0;) fos.write(fis.read()); }catch(Exception e){} }}
由於是一個位元組一個位元組的讀寫,在檔案稍微大一點的時候(大於1MB)時,速度會非常的慢。
稍作修改即可,每次1000個位元組讀寫。
byte[] tmp = new byte[1000]; for(;fis.available() > 0;) fis.read(tmp); fos.write(tmp);
據說2的n次方電腦處理效率會更快。
byte[] tmp = new byte[8192]; for(;fis.available() > 0;) fis.read(tmp); fos.write(tmp);
最後是標準版。
/*第三步,操作管道*/ byte[] tmp = new byte[8192]; //處理大部分內容 int length = fis.available()/8192; for(int i = 0; i < length; i ++){ fis.read(tmp); fos.write(tmp); } //處理最後剩下的內容 int size = fis.read(tmp); fos.write(tmp, 0, size);
/*
最後一句改成:
int left_length = fis.availble();
fis.read(tmp, 0, left_length);
fos.write(tmp, 0, left_length);
也沒有大問題。
*/
最簡單的iostream——檔案複製