FileInputStream FileOutputStream 對任意類型的文件 按字節數組進行拷貝
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; /* * 字節流復制文件 * 采用數組緩沖提高效率 * 字節數組 * FileInputStream 讀取字節數組 * FileOutputStream 寫字節數組 */ public class CopyFileByByte { public static void main(String[] args) { FileInputStream fis = null; FileOutputStream fos = null; try{ fis = new FileInputStream("c:\\t.zip"); fos = new FileOutputStream("d:\\t.zip"); //定義字節數組,緩沖 byte[] bytes = new byte[1024*10]; //讀取數組,寫入數組 int len = 0 ; while((len = fis.read(bytes))!=-1){ fos.write(bytes, 0, len); } }catch(IOException ex){ System.out.println(ex); throw new RuntimeException("文件復制失敗"); }finally{ try{ if(fos!=null) fos.close(); }catch(IOException ex){ throw new RuntimeException("釋放資源失敗"); }finally{ try{ if(fis!=null) fis.close(); }catch(IOException ex){ throw new RuntimeException("釋放資源失敗"); } } } } }
FileReader FileWriter 僅限於文本文件的復制拷貝
import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; /* * 字符流復制文本文件,必須文本文件 * 字符流查詢本機默認的編碼表,簡體中文GBK * FileReader讀取數據源 * FileWriter寫入到數據目的 */ public class Copy_2 { public static void main(String[] args) { FileReader fr = null; FileWriter fw = null; try{ fr = new FileReader("c:\\1.txt"); fw = new FileWriter("d:\\1.txt"); char[] cbuf = new char[1024];//按字符數組讀取 int len = 0 ; while(( len = fr.read(cbuf))!=-1){ fw.write(cbuf, 0, len); fw.flush();//刷新緩存 } }catch(IOException ex){ System.out.println(ex); throw new RuntimeException("復制失敗"); }finally{ try{ if(fw!=null) fw.close(); }catch(IOException ex){ throw new RuntimeException("釋放資源失敗"); }finally{ try{ if(fr!=null) fr.close(); }catch(IOException ex){ throw new RuntimeException("釋放資源失敗"); } } } } }
BufferedReader BufferedWriter
/* * 使用緩沖區流對象,復制文本文件 * 數據源 BufferedReader+FileReader 讀取 * 數據目的 BufferedWriter+FileWriter 寫入 * 讀取文本行, 讀一行,寫一行,寫換行 */ public class Copy_1 { public static void main(String[] args) throws IOException{ BufferedReader bfr = new BufferedReader(new FileReader("c:\\w.log")); BufferedWriter bfw = new BufferedWriter(new FileWriter("d:\\w.log")); //讀取文本行, 讀一行,寫一行,寫換行 String line = null; while((line = bfr.readLine())!=null){ bfw.write(line);//寫一行 bfw.newLine();//寫換行 bfw.flush(); } bfw.close(); bfr.close(); } }