最近學習到了java流然后寫了一個小程序,通過字節流來拷貝一個文件。
先貼上源碼:
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; public class InputOutPutSteamDemo { public static void main(String[] args) throws Exception { //文件的拷貝 FileInputStream fis = new FileInputStream("d://20170620.rar"); FileOutputStream fos = new FileOutputStream("e://20170620_copy.rar"); //設置一個緩存數組可以一次讀取多個字節,提高了效率 byte[] buffer = new byte[1024]; int length = 0;
//這個可以有多種讀入和寫入字節的方式,可以自己選擇 while((length=fis.read(buffer))!=-1) { fos.write(buffer,0,length); fos.flush(); } fos.close(); fis.close(); } }
首先通過new一個FileInputStream來讀取出要拷貝的文件的字節流,然后通過FileOutputStream輸出流也就是寫入流來確定具體要寫入到哪個文件中去
(這里聲明如果要寫入的文件不存在,會自動在指定位置上創建出指定的文件。)
然后就是普通的讀字節和寫字節了(這里是通過判斷讀取到的字節數是否為-1,當讀到的字節數為-1時,就意味着已經讀到文件末尾,即退出循環)
(然后在往流里寫入字節的時候要注意使用三個參數的那個方法,因為當文件大於你設置的緩沖數組時,就肯定要讀取多次,到最后一次有可能會填不滿緩沖數組,
也就是數組中的后面部分數據未被覆蓋如果直接寫入整個數組的話,會導致文件拷貝出錯,所以要使用有偏移量的那個方法,最后一次我讀到了多少個字節我就寫入多少個字節。)