黑马程序员技术交流社区
标题:
关于IO流的文件夹拷贝问题[已解决]
[打印本页]
作者:
陈嘉宾
时间:
2012-6-14 17:04
标题:
关于IO流的文件夹拷贝问题[已解决]
本帖最后由 陈嘉宾 于 2012-6-14 21:56 编辑
看到一段代码关于拷贝文件夹的 File[] files = originDir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
copyDir(originPath + "\\" + file.getName(), destPath + "\\"
+ file.getName());
} else {
copyFile(originPath + "\\" + file.getName(), destPath + "\\"
+ file.getName());
}
}
这句话什么意思我知道前面先递归然后if后面就不懂了,高手帮忙解释,然后这个方法视频里哪里会讲到麻烦告诉我一下。。调用了上面的dir方法就能创建一个目录了吗?
public static void main(String[] args) throws Exception {
System.out.println("文件夹拷贝结果:"
+ copyDir("C:\\Program Files\\Java", "E:\\java"));
}
public static boolean copyDir(String originPath, String destPath)
throws Exception {
File originDir = new File(originPath);
File destDir = new File(destPath);
if (!originDir.exists()) {
System.out.println("源目录不存在");
return false;
}
if (!destDir.exists()) {
System.out.println("目标目录不存在,正在创建目标目录……");
destDir.mkdir();
System.out.println("目标目录创建成功!");
}
File[] files = originDir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
copyDir(originPath + "\\" + file.getName(), destPath + "\\"
+ file.getName());
} else {
copyFile(originPath + "\\" + file.getName(), destPath + "\\"
+ file.getName());
}
}
return true;
}
作者:
张頔
时间:
2012-6-14 17:22
for (File file : files) {//增强for循环,将数组files里的每一个对象拿出来
if (file.isDirectory()) {//判断表示的文件是否是一个目录
copyDir(originPath + "\\" + file.getName(), destPath + "\\"//是目录的话就调用copyDir()方法将源目录(originPath)里的目录
//(file.getName())放到目的
+ file.getName());
} else {
copyFile(originPath + "\\" + file.getName(), destPath + "\\"//当是文件是就将文件放到目的
+ file.getName());
}
}
作者:
李海晓
时间:
2012-6-14 17:43
本帖最后由 李海晓 于 2012-6-14 17:45 编辑
if (file.isDirectory())判断file是否是一个目录,如果是则返回true,并且执行 copyDir方法,如果不是,那他就是文件,那么执行copyFile方法。
至于参数:
originPath + "\\" + file.getName(), destPath + "\\"+ file.getName());
原文件路径 \ 文件名 ,目标文件路径\ 文件名
而在copyDir方法中 :
调用了上面的dir方法就能创建一个目录了吗,我不懂什么意思,创建目录是在下面copyDir方法实现的,
if (!destDir.exists()) {//判断目录存在否,如果不存在就执行下面代码
System.out.println("目标目录不存在,正在创建目标目录……");
destDir.mkdir(); //这里是创建目录的
System.out.println("目标目录创建成功!");
}
作者:
郑传庆
时间:
2012-6-14 17:44
本帖最后由 郑传庆 于 2012-6-14 17:45 编辑
File[] files = originDir.listFiles();//z这句是声明一个File类型的数组,用来接收originDir目录下的所以文件,listFiles()表示等到当前目录下所有文件
for (File file : files) {//这句想楼上所说,是增强for循环,用来遍历files 数组里面的所以元素(文件)
if (file.isDirectory()) {//判断文件存在
且
是一个目录时,是就返回true,下面的楼上都说了
copyDir(originPath + "\\" + file.getName(), destPath + "\\"
+ file.getName());
} else {
copyFile(originPath + "\\" + file.getName(), destPath + "\\"
+ file.getName());
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2