您的位置:首页 > 编程语言 > Java开发

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

2016-12-28 17:09 399 查看
在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对象,再判断他们是文件夹还是文件....。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java IO 递归算法