package j2se.core.io.buffer.Stream; //包名,若是直接复制得注意包名 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /* * 复制数据! */ public class Demo2 { public static void main(String[] args) { // 创建源文件地址和目标文件地址 String source = "assert/狠狠.mp3"; //换为自己的路径,这个是相对路径 String desc = "E:/assert/狠狠.mp3"; //这个是绝对路径 // 创建关联类 File sourceFile = new File(source); File descFile = new File(desc); // 判断该目录是否存在 if(!descFile.getParentFile().exists()){ descFile.getParentFile().mkdir(); System.out.print("该目录不存在,并且已经创建!"); }else { System.out.print("该目录已经存在,无需创建!"); } FileInputStream in = null; FileOutputStream out = null; // 创建两个字节流 try { // 要把FileInputStream提到外面 // FileInputStream in = new FileInputStream(sourceFile); // FileOutputStream out = new FileOutputStream(descFile); in = new FileInputStream(sourceFile); out = new FileOutputStream(descFile); // 定义容器来装数据 byte[] bytes = new byte[1024]; int len = -1; System.out.println("复制数据开始..."); // 对数据进行读写 while((len = in.read(bytes, 0, bytes.length)) != -1){ out.write(bytes,0,len); System.out.println("数据拷贝中..."); } System.out.println("复制数据结束!"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { in.close(); out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
下面还有一种是用了buffer包装流,提高效率,先想想如何实现再看源码!
package j2se.core.io.buffer.Stream; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /* * 复制数据!Buffer包装流! */ public class Demo3 { public static void main(String[] args) { // 创建源文件地址和目标文件地址 String source = "assert/狠狠.mp3"; String desc = "E:/assert/狠狠.mp3"; // 创建关联类 File sourceFile = new File(source); File descFile = new File(desc); // 判断该目录是否存在 if(!descFile.getParentFile().exists()){ descFile.getParentFile().mkdir(); System.out.print("该目录不存在,并且已经创建!"); }else { System.out.print("该目录已经存在,无需创建!"); } BufferedInputStream in = null; BufferedOutputStream out = null; // 创建两个字节流 try { // 要把FileInputStream提到外面 // FileInputStream in = new FileInputStream(sourceFile); // FileOutputStream out = new FileOutputStream(descFile); in = new BufferedInputStream(new FileInputStream(sourceFile)) ; out = new BufferedOutputStream(new FileOutputStream(descFile)) ; // 定义容器来装数据 byte[] bytes = new byte[1024]; int len = -1; System.out.println("复制数据开始..."); // 对数据进行读写 while((len = in.read(bytes, 0, bytes.length)) != -1){ out.write(bytes,0,len); System.out.println("数据拷贝中..."); } System.out.println("复制数据结束!"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ try { in.close(); out.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }