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(); } }