JAVA利用字节流完成拷贝文件夹。

利用IO流中的字节输入输出流  完成拷贝文件夹

package com.decorator;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyDirDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
			CopyDirUtil.copyDir(new File("E:\\ff"), new File("F:\\cc"));
			System.out.println("success!");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
class CopyDirUtil{
	public static void copyDir(File src,File dst) throws IOException{
		//这里传入的两个参数  一个是源文件夹,一个是目标文件夹
		dst.mkdirs();//这个方法如果要创建E:\\aa\\bb  若没有aa文件夹   会自动创建aa 再创建bb
		//dst.mkdir();这个方法如果要创建E:\\aa\\bb  若没有aa文件夹   会报错
		if(src!=null){//如果源文件存在
			File[] files = src.listFiles();//遍历源文件夹中的文件或目录
			if(files!=null){//files不为空,这里的意思就是如果源文件夹不为空
				for(File f:files){//遍历文件夹中的内容
					//如果f是文件,复制文件   用字节流来复制
					if(f.isFile()){
						FileInputStream fiStream=new FileInputStream(f);//读f
						FileOutputStream foStream=new FileOutputStream(
								dst.getAbsolutePath()+"\\"+f.getName());//拷贝到目标文件夹
						byte[] buff=new byte[1024*1024];//自定义一个字节缓冲区
						int len=0;//保存的读到的字节的个数
						while((len=fiStream.read(buff))!=-1){
							foStream.write(buff,0,len);
							
						}
						fiStream.close();//关闭读资源
						foStream.close();//关闭写资源
						
					}else{//如果f不是文件  则递归
						copyDir(f,new File(dst.getAbsolutePath()+"\\"+f.getName()));;
					}
				}
			}
		}
	}
}


你可能感兴趣的:(JAVA利用字节流完成拷贝文件夹。)