• IO—文件夹拷贝


    文件夹复制

    package com.cn.dark;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Scanner;
    
    /**
     * 使用文件输入、输出流实现文件拷贝
     * @author DARK
     *
     */
    public class CopyFile {
    	
    	public static void main(String[] args) throws IOException {
    		Scanner sc = new Scanner(System.in);
            System.out.println("请输入源目录:");
            String sourcePath = sc.nextLine();
            System.out.println("请输入新目录:");
            String path = sc.nextLine();
            boolean flag=true;//控制创建拷贝文件夹
            //String sourcePath = "D://aa";
            //String path = "D://bb";
            
            copyDir(sourcePath, path,flag);
    		
    	}
    	//文件拷贝
    	public static void copyFile(String srcPath,String destPath) {
    		//文件字节输入流
    		//1、创建源
    		File src=new File(srcPath);//源头
    		File dest=new File(destPath);//目的地
    		//2、选择流
    		InputStream is=null;
    		OutputStream os=null;
    		
    		try {
    				is=new  FileInputStream(src);
    				os=new FileOutputStream(dest);
    				
    				//3、操作(分段读取)
    				byte[] flush=new byte[1024*10];//缓冲容器
    				int len=-1;
    				
    				while((len=is.read(flush))!=-1) {//read返回的是缓存容器中存储字节的个数
    //					//字节数组-->字符串(解码)
    //					String str=new String(flush,0,len);
    //					byte[] datas=str.getBytes();//字符串-->字节数组;编码
    					os.write(flush,0,len);
    				}
    				os.flush();//刷新,防止驻留在缓存
    			} catch (FileNotFoundException e) {
    				e.printStackTrace();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}finally {
    				//4、释放资源 分别关闭 先打开的后关闭
    				if(null!=os) {
    					try {
    						os.close();
    					} catch (IOException e) {
    						e.printStackTrace();
    					}
    				}
    				
    				if(null!=is) {
    				try {
    					is.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}				
    			}
    		}
    	}
    	//文件夹拷贝
    	public static void copyDir(String oldPath, String newPath,boolean flag) throws IOException {
            	File file = new File(oldPath);
            	if(flag) {
            		newPath=newPath+"/"+file.getName();
            		new File(newPath).mkdir();//拷贝根文件夹
            		flag=false;
            	}
            	//文件名称列表
                String[] filePath = file.list();
                
                if (!(new File(newPath)).exists()) {
                         (new File(newPath)).mkdir();
                     }
                     
                     for (int i = 0; i <filePath.length; i++) {
                    	 //递归 拷贝文件夹
                         if ((new File(oldPath + file.separator + filePath[i])).isDirectory()) {
                             copyDir(oldPath  + file.separator  + filePath[i], newPath  + file.separator + filePath[i],flag);
                         }
                         //文件直接拷贝
                         if (new File(oldPath  + file.separator + filePath[i]).isFile()) {
                             copyFile(oldPath + file.separator + filePath[i], newPath + file.separator + filePath[i]);
                         }
                        
                     }
      
        }
    }
    
  • 相关阅读:
    三、MyCat主要配置介绍
    二、mycat15种分片规则
    一、mycat介绍
    SpringBoot使用JdbcTemplate批量保存
    linux发布常用命令
    ROS 系统架构及概念
    ROS 在 Ubuntu 18.04 安装
    利用 Skywalking 搭建 APM(应用性能管理)— 安装与配置
    elasticsearch 集群搭建及启动常见错误
    Git 基本操作
  • 原文地址:https://www.cnblogs.com/firecode7/p/16120462.html
Copyright © 2020-2023  润新知