package onlyfun.caterpillar;
import java.io.*;
public class FileStreamDemo {
public static void main(String[] args) {
try {
byte[] buffer = new byte[1024];
// 來源檔案
FileInputStream fileInputStream =
new FileInputStream(new File(args[0]));
// 目的檔案
FileOutputStream fileOutputStream =
new FileOutputStream(new File(args[1]));
// available()可取得未讀取的資料長度
System.out.println("複製檔案:" +
fileInputStream.available() + "位元組");
while(true) {
if(fileInputStream.available() < 1024) {
// 剩餘的資料比1024位元組少
// 一位元一位元讀出再寫入目的檔案
int remain = -1;
while((remain = fileInputStream.read())
!= -1) {
fileOutputStream.write(remain);
}
break;
}
else {
// 從來源檔案讀取資料至緩衝區
fileInputStream.read(buffer);
// 將陣列資料寫入目的檔案
fileOutputStream.write(buffer);
}
}
// 關閉串流
fileInputStream.close();
fileOutputStream.close();
System.out.println("複製完成");
}
catch(ArrayIndexOutOfBoundsException e) {
System.out.println(
"using: java FileStreamDemo src des");
e.printStackTrace();
}
catch(IOException e) {
e.printStackTrace();
}
}
}