Java-IO流-FileInputStream與FileOutputStream
- FileInputStream,位元組輸入流,完成檔案内容讀取
- FileInputStreamr.read()括号中不加任何參數,是單個位元組得讀取檔案内容
- 可以使用緩沖數組一次讀取多個位元組,FileInputStream.read(b),b是byte類型的數組
- FileInputStream.read()的傳回值是int類型,如果傳回值為-1的時候表示已經讀完了整個檔案
- FileOutputStream,位元組輸出流,完成向檔案内寫入資料操作
- FileOutputStream.writer()方法可以向檔案中寫入資料
- 可以一個位元組一個位元組的進行輸出
- 可以直接寫入一個byte類型的數組
- 檔案的覆寫于追加
- 檔案的覆寫于追加指的是在不同的流之間的操作,在同一個流中進行的輸出操作,都是追加
- new FileOutputStream(f) 相當于對原檔案進行覆寫操作。
- new FileOutputStream(f,false) 相當于對源檔案進行覆寫操作。不是追加。
- new FileOutputStream(f,true) 對原來的檔案進行追加,而不是覆寫。
- 注意:不要用位元組流去操作文本文檔
- 示例:完成非文本檔案複制
public class Test02 {
// 這是main方法,實作程式主要邏輯
public static void main(String[] args) throws IOException {
// 位元組流實作非文本文檔複制
// 源檔案對象
File f1 = new File("E:\\Study\\java_train_code\\JavaSE基礎\\CHICO.jpg");
// 目标檔案對象
File f2 = new File("E:\\Study\\java_train_code\\JavaSE基礎\\CHICO_copy.jpg");
// 讀取檔案位元組流
FileInputStream fis = new FileInputStream(f1);
// 輸出檔案位元組流
FileOutputStream fos = new FileOutputStream(f2);
// 複制操作
// 一個位元組一個位元組得讀取
/*int n = 0;
while ((n = fis.read())!=-1){// 如果傳回值為-1就表示檔案讀取完了
fos.write(n);
}*/
// 緩沖數組進行複制
byte[] b = new byte[1024*8];
int len = 0;
while((len = fis.read(b)) != -1){// 如果傳回值為-1,就表示檔案讀取完了
fos.write(b, 0, len);
}
// 關閉流
fos.close();
fis.close();
}
}