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 下载地址

  • 相关阅读:
    FSR薄膜压力传感器使用教程
    3.7 基于51单片机+MC20的路径显示【使用STC15W内核】
    4.6 基于STM32+MC20地图显示路径功能
    ProgressDialog 进度条的初步认识
    初识别进度条
    Spinner simpleAdapte适配器 下拉列表
    下拉菜单 Spinner 简单纯字符串版
    onItemSelected 获取选中的 信息 3种方法
    GridView 二维排布
    datePicker 及 timePicker Diolage弹出对话框式 比较好看的 监听事件
  • 原文地址:https://www.cnblogs.com/Java-biao/p/11266618.html
Copyright © 2011-2022 走看看