黑马程序员技术交流社区
标题:
JAVA 用递归思想复制多层目录下的文件
[打印本页]
作者:
marcojam
时间:
2015-8-8 21:38
标题:
JAVA 用递归思想复制多层目录下的文件
本帖最后由 marcojam 于 2015-8-9 07:37 编辑
package copyrename;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
/*
* 源数据:C:\\源文件
* 目的地:d:\\源文件
* 分析
* a:获取源文件数组对象
* b:遍历文件数组对象
* c:判断是否文件夹
* 是文件夹:
* 获取数组对象
* 遍历
* 回到c判断
* 创建文件夹
* 不是文件夹:复制新文件
*
*/
public class CopyDemo {
public static void main(String[] args) throws IOException {
File ifile = new File("c:\\源文件");
File ofile = new File("d:\\");
diguicopy(ifile, ofile);
}
// 递归法复制多层文件、文件夹
public static void diguicopy(File file, File destnation) throws IOException {
// 在目的地创建该文件夹
File newfolder = new File(destnation, file.getName());
newfolder.mkdir();
// 获取文件对象数组
File[] files = file.listFiles();
// 遍历该对象数组
for (File f : files) {
if (f.isDirectory()) {
//递归
diguicopy(f, newfolder);
} else {
//高效字节数组缓冲流
BufferedInputStream bis = new BufferedInputStream(
new FileInputStream(f));
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream(new File(newfolder, f.getName())));
int b = 0;
byte[] by = new byte[1024];
while ((b = bis.read(by)) != -1) {
bos.write(by, 0, b);
}
bos.close();
bis.close();
}
}
}
}
复制代码
作者:
summe0906
时间:
2015-8-14 23:34
package practice;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test2 {
public static void main(String[] args) throws IOException {
File f1 = new File("F:\\111");
File f2 = new File("E:\\111");
if (!f2.exists()) {
f2.mkdir();
}
copyfile(f1, f2);
}
private static void copyfile(File f1, File f2) throws IOException {
File[] files = f1.listFiles();
for (File f : files) {
String name = f.getName();
if (f.isDirectory()) {
File f3 = new File(f2 + "\\" + name);
f3.mkdir();
copyfile(f, f3);
} else {
File f4 = new File(f2, name);
copy(f, f4);
}
}
}
private static void copy(File f, File f4) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(f4));
int len = 0;
byte[] bytes = new byte[1024];
while ((len = bis.read(bytes)) != -1) {
bos.write(bytes, 0, len);
}
bos.close();
bis.close();
}
}
复制代码
作者:
cemabenteng
时间:
2015-8-14 23:56
这是你做的还是从网上找到的,基础班的视频应该不是这么讲的
作者:
风华正茂
时间:
2015-8-15 18:03
楼主写得不错,赞一个
作者:
marcojam
时间:
2015-8-15 23:24
cemabenteng 发表于 2015-8-14 23:56
这是你做的还是从网上找到的,基础班的视频应该不是这么讲的
这就是老师讲的啊,然后自己理解敲出来的,跟老师有点小区别,不过思路都一样
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2