Java IO技术之字节流复制

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

  

posted @ 2016-10-08 16:23  朕的江山如画  阅读(161)  评论(0编辑  收藏  举报