zoukankan      html  css  js  c++  java
  • Java文件夹的拷贝

    1. 文件夹的拷贝
    public static void copyDir(String sourcePath, String newPath) {
    		File start = new File(sourcePath);
    		File end = new File(newPath);
    		String[] filePath = start.list();		//获取该文件夹下的所有文件以及目录的名字
    		if(!end.exists()) {
    			end.mkdir();
    		}
    		for(String temp:filePath) {
    			//查看其数组中每一个是文件还是文件夹
    			if(new File(sourcePath+File.separator+temp).isDirectory()) {
    				//为文件夹,进行递归
    				copyDir(sourcePath+File.separator+temp, newPath+File.separator+temp);
    			}else {
    				//为文件则进行拷贝
    				copyFile(sourcePath+File.separator+temp, newPath+File.separator+temp);
    			}
    		}
    	}
    

    2.文件的拷贝

    public static void copyFile(String sourcePath, String newPath) {
    		File start = new File(sourcePath);
    		File end = new File(newPath);
    		try(BufferedInputStream bis=new BufferedInputStream(new FileInputStream(start));
    			BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(end))) {
    			int len = 0;
    			byte[] flush = new byte[1024];
    			while((len=bis.read(flush)) != -1) {
    				bos.write(flush, 0, len);
    			}
    			bos.flush();
    		}catch(FileNotFoundException e) {
    			e.printStackTrace();
    		}catch(IOException e) {
    			e.printStackTrace();
    		}
    	}
    

    注意:在该函数中,用到的是java7增强的try语句来进行关闭资源。它允许在try关键字后紧跟一对圆括号,里面可以声明、初始化一个或多个资源(不同的资源之间用分号隔开),此处的资源指的是那些必须在程序结束时显示关闭的资源(数据库连接、网络连接等),try语句会在该语句结束时自动关闭这些资源。

    3. 函数的调用

    public static void main(String[] args) {
    		Scanner scanner = new Scanner(System.in);
    		System.out.print("From:");
    		String sourcePath = scanner.nextLine();
    		System.out.print("To:");
    		String newPath = scanner.nextLine();
    		copyDir(sourcePath, newPath);
    	}
    

    4. 源代码

    /**
     * 
     * 复制文件夹d:/java下面所有文件和子文件夹内容到d:/java2。
        提示:涉及单个文件复制、目录的创建、递归的使用
     */
    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;
    import java.util.Scanner;
    
    public class Practice01{
    	public static void main(String[] args) {
    		Scanner scanner = new Scanner(System.in);
    		System.out.print("From:");
    		String sourcePath = scanner.nextLine();
    		System.out.print("To:");
    		String newPath = scanner.nextLine();
    		copyDir(sourcePath, newPath);
    	}
    	
    	//文件夹的拷贝
    	public static void copyDir(String sourcePath, String newPath) {
    		File start = new File(sourcePath);
    		File end = new File(newPath);
    		String[] filePath = start.list();		//获取该文件夹下的所有文件以及目录的名字
    		if(!end.exists()) {
    			end.mkdir();
    		}
    		for(String temp:filePath) {
    			//查看其数组中每一个是文件还是文件夹
    			if(new File(sourcePath+File.separator+temp).isDirectory()) {
    				//为文件夹,进行递归
    				copyDir(sourcePath+File.separator+temp, newPath+File.separator+temp);
    			}else {
    				//为文件则进行拷贝
    				copyFile(sourcePath+File.separator+temp, newPath+File.separator+temp);
    			}
    		}
    	}
    	
    	//文件的拷贝
    	public static void copyFile(String sourcePath, String newPath) {
    		File start = new File(sourcePath);
    		File end = new File(newPath);
    		try(BufferedInputStream bis=new BufferedInputStream(new FileInputStream(start));
    			BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(end))) {
    			int len = 0;
    			byte[] flush = new byte[1024];
    			while((len=bis.read(flush)) != -1) {
    				bos.write(flush, 0, len);
    			}
    			bos.flush();
    		}catch(FileNotFoundException e) {
    			e.printStackTrace();
    		}catch(IOException e) {
    			e.printStackTrace();
    		}
    	}
    }
    
    

    当然和文件以及流有关的更多操作,可以使用Apache Software Foundation提供的相关jar包(commons-io)。

    ps:commons-io 下载地址

  • 相关阅读:
    转载:从51CTO转来的两篇关于SQL的文章
    转载:几万年前,有一只猴子大闹地府后删库跑路...
    【java/oralce/sql】往一张仅有id,名称,创建时间三个字段的表中插入百万数据需要多久?1分26秒
    处处留心皆学问
    [oracle/java/sql]用于上十万批量数据插入Oracle表的Java程序
    Linux学习_003_虚拟机CentOS 7.5 如何固定IP地址
    Linux学习_002_VMware12.0 Pro 中安装 CentOS-7.5(桌面版)
    Linux学习_001_VMware10.0 && VMware12.0 Pro && VMware14.0 Pro && VMware 15.0 Pro 的安装与破解
    day76_淘淘商城项目_09_商品详情页动态展示实现(jsp+redis) + FreeMarker模板引擎入门 + 商品详情页静态化实现(Win版本的nginx作http服务器)_匠心笔记
    Eclipse注释模板设置详解
  • 原文地址:https://www.cnblogs.com/Java-biao/p/11266618.html
Copyright © 2011-2022 走看看