java 拷贝目录

package 拷贝目录;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyTest03 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		//源
		File srcFile =new File("D:\\拷贝");
		//拷贝目标
		File destFile =new File("D:\\拷贝目录");
		
		//调用拷贝方法
		copyDir(srcFile,destFile);
	}
	
	private static void copyDir(File srcFile,File destFile) {
		 if(srcFile.isFile()) { //如果是文本了,开始拷贝  
			 
			 FileInputStream in =null;
			 FileOutputStream out =null;
			 
			 try {
				in =new FileInputStream(srcFile);
				String endPath=destFile.getAbsolutePath().endsWith("\\")?destFile.getAbsolutePath():destFile.getAbsolutePath()+"\\"+srcFile.getAbsolutePath().substring(3);
				out =new FileOutputStream(endPath);
				//文本的复制
				byte[] bytes= new byte[1024*1024] ;//1M
				int readCount =0;
				while((readCount=in.read(bytes))!=-1) {
					out.write(bytes);
				}
				//刷新
				out.flush();
			 } catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}finally {
				if (in != null) {
					try {
						in.close();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				if (out != null) {
					try {
						out.close();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
			 
			 return;
		 }
		
		 //如果是目录 递归到文本
		File[] files =srcFile.listFiles();
		for (File file : files) {
			if(file.isDirectory()) { //如果是目录
				//源目录的绝对路径
				String srcDir= file.getAbsolutePath();
				//拷贝目标的绝对路径
				String destDir=destFile.getAbsolutePath().endsWith("\\")?destFile.getAbsolutePath():destFile.getAbsolutePath()+"\\"+srcDir.substring(3);
				//新建目录
				File newFile = new File(destDir);
				newFile.mkdirs();
			}
			//递归
			copyDir(file,destFile);
		}

	}
	
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值