使用Java中的位元組流複製檔案
阿新 • • 發佈:2019-01-31
一.每次只讀取一個位元組,輸出一個位元組的方式來複制檔案,程式碼如下:
package com.xiao.CopyFile; import org.junit.Test; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /** * @Author 笑笑 * @Date 20:32 2018/05/06 */ public class CopyFile_01 { @Test public void test_01(){ FileInputStream fis = null; FileOutputStream fos = null; try{ //檔案的起始位置 fis = new FileInputStream("c:\\1.txt"); //檔案將要複製到的位置 fos = new FileOutputStream("d:\\1.txt"); int len = 0; //每讀取一個位元組,寫入一個位元組 while ((len = fis.read()) != -1){ fos.write(len); } }catch(IOException e){ throw new RuntimeException("檔案複製失敗!"); }finally{ try { fos.close(); System.out.println("輸出流資源已釋放"); }catch (IOException e){ throw new RuntimeException("輸出流資源釋放失敗!"); }finally { try{ fis.close(); System.out.println("輸入流資源已釋放"); }catch (IOException e){ throw new RuntimeException("輸入流資源釋放失敗!"); } } } } }
二.使用讀取位元組陣列、輸出位元組陣列的方式來複制檔案(速度快),程式碼如下:
package com.xiao.CopyFile; import org.junit.Test; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /** * @Author 笑笑 * @Date 20:52 2018/05/06 */ public class CopyFile_02 { @Test public void test_01(){ FileInputStream fis = null; FileOutputStream fos = null; try{ //檔案的起始位置 fis = new FileInputStream("c:\\1.txt"); //檔案將要複製到的位置 fos = new FileOutputStream("d:\\1.txt"); //定義位元組陣列 byte[] b = new byte[1024]; int len = 0; //複製檔案 while((len = fis.read(b)) != -1){ //從陣列的0索引位置開始輸出,讀取到幾個有效位元組,輸出幾個有效位元組 fos.write(b,0,len); } }catch(IOException e){ throw new RuntimeException("檔案複製失敗!"); }finally { try{ fos.close(); System.out.println("輸出流資源已釋放"); }catch (IOException e){ throw new RuntimeException("輸出流資源釋放失敗!"); }finally { try { fis.close(); System.out.println("輸入流資源已釋放"); }catch (IOException e){ throw new RuntimeException("輸入流資源釋放失敗!"); } } } } }