• IO流-复制多极文件夹(递归实现)


    package com.io.test;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    /*
     * 复制多极文件夹
     * 数据源: F:\Demo
     * 目的地: D:\demo
     * 
     * 分析:
     *    A:封装数据源
     *    B:封装目的地
     *    C:获取该File对象下所有的文件夹或文件
     *      遍历每一个File对象
     *    D:判断是否是文件夹或文件
     *       是文件夹:
     *          就在目的地目录下创建该文件夹File
     *          回到C
     *        
     *       是文件:
     *         直接复制
     */
    public class Test07_标准版 {
         public static void main(String[] args) throws IOException {
    		File srcFolder=new File("f:\Demo");
    		File destFolder=new File("d:\demo");
    		if(!destFolder.exists()){
    			destFolder.mkdir();
    		}
    		copyFolder(srcFolder,destFolder);
    	}
        //复制文件夹
    	public static void copyFolder(File srcFolder, File destFolder) throws IOException {
    	    File[] listFiles = srcFolder.listFiles();
    	    for(File f:listFiles){
    	    	if(f.isDirectory()){
    	    		//创建新的目录
    	    		
    	    		File newFolder=new File(destFolder,f.getName());
    	    		newFolder.mkdir();
    	    		copyFolder(f,newFolder);
    	    		
    	    	}else{
    	    		//复制文件
    	    		File newFile=new File(destFolder,f.getName());
    	    		copyFile(f,newFile);
    	    	}
    	    }
    	}
        //复制文件
    	public static void copyFile(File file, File newFile) throws IOException {
    	 BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));
    	 BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(newFile));
    	 int len=0;
    	 byte[] buf=new byte[1024];
    	 while((len=bis.read(buf))!=-1){
    		 bos.write(buf, 0, len);
    		 bos.flush();
    	 }
    	    bis.close();
    	    bos.close();
    	}
    }
    

      

  • 相关阅读:
    24. Swap Nodes in Pairs
    23. Merge k Sorted Lists
    shell脚本报错:"[: =: unary operator expected"
    一种用 数组元素 指定 所调函数 的方法
    阻塞 非阻塞
    Linux open() 一个函数,两个函数原型
    QT 执行windows cmd 命令并读取结果
    Qt5 escape spaces in path
    获取磁盘的 总容量,空余容量,已用容量 【windows】
    通过进程名称,获取其路径
  • 原文地址:https://www.cnblogs.com/yuefeng123/p/7376530.html
Copyright © 2020-2023  润新知