import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class FileCopyStream { public static void main(String[] args) { //fileCopy0("b.dat","d:/ex/a/","d:/ex/b/"); //fileCopy1("b.dat","d:/ex/a/","d:/ex/b/"); //fileCopy2("b.dat","d:/ex/a/","d:/ex/b/"); fileCopy2("1.mp3","d:/ex/a/","d:/ex/b/"); //fileCopy3("c.mp3","d:/ex/a/","d:/ex/b/"); //fileCopy3("d.txt","d:/ex/a/","d:/ex/b/"); } private static void fileCopy0(String fileName, String dir1,String dir2){ try { FileInputStream in = new FileInputStream(dir1+fileName); FileOutputStream out = new FileOutputStream(dir2+fileName); byte[] buffer = new byte[512]; in.read(buffer); out.write(buffer); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (Exception e) { } } //学习关流 private static void fileCopy1(String fileName, String dir1,String dir2){ FileInputStream in = null; FileOutputStream out = null; try { in = new FileInputStream(dir1+fileName); out = new FileOutputStream(dir2+fileName); byte[] buffer = new byte[512]; in.read(buffer); out.write(buffer); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (Exception e) { }finally{ try { in.close(); out.close(); } catch (IOException e) { throw new RuntimeException("文件无法关闭"); } } } //可以拷贝大文件 private static void fileCopy2(String fileName, String dir1,String dir2){ FileInputStream in = null; FileOutputStream out = null; try { in = new FileInputStream(dir1+fileName); out = new FileOutputStream(dir2+fileName); byte[] buffer = new byte[512]; int num = 0; do{ num = in.read(buffer); out.write(buffer,0,num); }while(num>=0); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); }finally{ try { in.close(); out.close(); } catch (IOException e) { throw new RuntimeException("文件无法关闭"); } } } //可以拷贝大文件 private static void fileCopy3(String fileName, String dir1,String dir2){ FileInputStream in = null; FileOutputStream out = null; try { in = new FileInputStream(dir1+fileName); out = new FileOutputStream(dir2+fileName); byte[] buffer = new byte[512]; int num=0; while(in.available()>0){ num = in.read(buffer); //最简单的加密 for(int i=0;i<num;i++){ buffer[i] = (byte)(buffer[i]+1); } out.write(buffer,0,num); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (Exception e) { }finally{ try { in.close(); out.close(); } catch (IOException e) { throw new RuntimeException("文件无法关闭"); } } } }