IO流"递归"实现"文件夹克隆"

首先通过缓冲字节输入流和缓冲字节输出流实现文件的拷贝,然后通过File类进行文件类型的判断,最后通过递归来实现文件夹的复制。

public class DirCopy{
	public static void main(String[] args){
		dirCopy(new File("源文件"),new File("目标文件"));
	}
	
	//文件的拷贝
	public  static void fileCopy(File src,File dest){
        //数据源
        //创建缓冲字节输入流
        BufferedInputStream bis=null;
        //创建缓冲字节输出流
        BufferedOutputStream bos=null;

        try {
            bis=new BufferedInputStream(new FileInputStream(src));
            bos=new BufferedOutputStream(new FileOutputStream(dest));
            //声明一个byte数组充当缓冲区		
            byte[] flag=new byte[4096];
            //声明一个读取文件长度的整形变量
            int len;
            //循环读取 	当值=-1时,说明文件已经读取完毕
            while ((len=bis.read(flag))!=-1 ){		
                //写文件
                bos.write(flag,0,len);
                //手动刷新缓冲区
                bos.flush();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //关闭输入流
            try {
            	//当输入流不为空的时候将其关闭
                if (bis!=null)
                    bis.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            //关闭输出流
            try {
            	//当输出流不为空的时候将其关闭
                if (bos!=null)
                    bos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }



	//文件夹的拷贝
	public  static void dirCopy(File fileSrc,File fileDest){
        //判断源文件是否存在
        if(!fileSrc.exists()){
        	//通过控制台进行提示
            System.out.println("源文件不存在:"+fileSrc.getName());
            return;
        }
        //判断目标文件是否存在
        if(!fileDest.exists()){
            //不存在的话直接创建
            fileDest.mkdirs();
        }

        //将源文件中的所有文件创建为一个文件数组
        File[] files=fileSrc.listFiles();

        //循环遍历源文件中的文件
        for (File file:files){
            //并将目标文件根目录+  以及从源文件中获取到的文件名        进行返回
             File newfile=new File(fileDest,file.getName());
            //判断正在遍历的源文件是不是文件夹
            if (file.isDirectory()){
            	//通过递归自己拷贝自己
                DirCopy1(file,newfile);
            }else{
            	//对文件进行的拷贝
               fileCopy(file,newfile);
            }
        }
    }

}
上一篇:汇编语言 第3版 王爽 检测点答案及详细解析 (更新中)


下一篇:windows 导出excel不会报错 ,部署到Liunx 导出excel报错