package com.heima.lianxi;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo3 {
/**
* 需求:3,从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
* @throws IOException
*/
public static void main(String[] args) throws IOException {
File src = Demo1.getDir();
File dest = Demo1.getDir();
copy(src,dest);
}
public static void copy(File src, File dest) throws IOException {
//1.复制文件夹,要在被复制的文件夹里建一个和相同名称的复制文件
File newDir = new File(dest,src.getName());
newDir.mkdir();
//2.获取复制文件里所有的文件和文件夹
File[] subFiles = src.listFiles();
//3.遍历
for (File subFile : subFiles) {
if (subFile.isFile()) {
//4.判断是文件,则创建输入流对象,读取文件
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile));
//创建输出流读取文件,它的父级目录就是现在的newDir,复制的文件名和读取的文件名要保持一致
BufferedOutputStream bos
= new BufferedOutputStream(new FileOutputStream(new File(newDir,subFile.getName())));
int b;
while((b = bis.read()) != -1) {
bos.write(b);
}
bis.close();
bos.close();
}else {
copy(subFile,newDir);
}
}
}
}
上述代码中
//4.判断是文件,则创建输入流对象,读取文件
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subFile));
//创建输出流读取文件,它的父级目录就是现在的newDir,复制的文件名和读取的文件名要保持一致
BufferedOutputStream bos
= new BufferedOutputStream(new FileOutputStream(new File(newDir,subFile.getName())));
为什么读取的时候是subFile,而写入的要subFile.getName()??求解!!! |
|