文件夹的复制--递归算法

在Java中,要想实现文件夹的复制,采用的是IO技术。通常对我们来说,要想实现一个文件的复制,是十分简单的。那文件夹的复呢?我们只需要从中间价格递归算法即可。


要求是:将test文件夹的所有内容都复制到test1文件夹下,且要求test文件夹中的结构不变,如/test/a/b.doc文件在test1文件下的目录应该是/test1/test/a/b.doc.

具体的代码实现如下

package com.tiantang.io;

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;


public class TestFileStream {

	public static void main(String[] args) {
		String srcPath="F:\\test";
		File src=new File(srcPath);
		String destPath="F:\\test1";
		File dest=new File(destPath);
		copyDir(src, dest);
	}
	
	public static void copyDir(File src, File dest) {
		if(src.isDirectory()){
			File temp=new File(dest,src.getName());
			temp.mkdirs();
			for (File file : src.listFiles()) {
				copyDir(file, temp);
			}
		}else{
			copyFile(src, new File(dest,src.getName()));
		}
	}

	/**
	 * 拷贝文件
	 * 
	 * @param src
	 * @param dest
	 */
	public static void copyFile(File src, File dest) {
		InputStream in = null;
		OutputStream out = null;
		try {
			in = new FileInputStream(src);
			out = new FileOutputStream(dest);
			byte[] b = new byte[1024];
			int len = 0;
			while (-1 != (len = in.read(b))) {
				out.write(b, 0, len);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			try {
				in.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}


}
要想实现文件夹的复制,就得用到递归,剩下的就是文件的复制了。思路:当要复制文件夹时,我们用listFiles()方法得到文件夹的所有File,然后在遍历所有的File对象,再判断他们是文件夹还是文件....。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值