黑马程序员技术交流社区
标题:
从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
[打印本页]
作者:
遗忘的青春年华
时间:
2014-3-18 00:26
标题:
从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
public static void main(String[] args) throws IOException {
File src = getDir();
File dest = getDir();
//if(src.equals(dest)) { //如果源文件和目标文件一致
//System.out.println("目标文件夹是源文件夹的子文件夹"); //提示
//}else { //如果原文件和目标文件不一致
copy(src,dest); //拷贝
//}
}
private static void copy(File src, File dest) throws IOException {
File newDir = new File(dest,src.getName()); //创建文件拷贝后的目录,目的文件夹为父目录,被拷贝的文件名字作为子目录
newDir.mkdir(); //创建这个目录
File[] subFiles = src.listFiles(); //获取当前文件夹下的所有的字母录
for (File subFile : subFiles) { //遍历这个数组
if(subFile.isFile()) {
File file = new File(newDir,subFile.getName()); //这里不怎么懂,请高人给读一下好吗,为什么调用subFile.getName()
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile)); //读这个文件
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file)); //将文件写出
int b;
while((b = bis.read()) != -1) {
bos.write(b);
}
bis.close();
bos.close();
}else {
copy(subFile,newDir); //还有为什么这里传的是newDir ???
}
}
}
public static File getDir() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个文件夹路径:");
while (true) {
String line = sc.nextLine();
File dir = new File(line);
if (!dir.exists()) {
System.out.println("您输入的文件夹路径不存在,请重新输入:");
} else if (dir.isFile()) {
System.out.println("您输入的是文件路径,请输入一个文件夹路径");
} else {
return dir;
}
}
}
复制代码
作者:
董振冬
时间:
2014-3-18 12:17
subFiles 是数组(也可以看作文件夹),你自己也注释了,遍历subFiles数组(文件夹里面有很多子文件夹),获取数组每一个子文件,创建一个file对象封装子文件,获取子文件夹名称subFile.getName作为新的目录名称!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2