package HomeWork;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class WorkTest {
public static void main(String[] args)
{
//在当前目录下创建一个外层目录
File dir = new File("F:\\复制后的文件夹(4.20作业)");
dir.mkdir();
//调用方法复制文件
getFileList("F:\\笔记\\第1周\\2.24", "F:\\复制后的文件夹(4.20作业)");
}
/**
* 执行复制操作
* @param fromFile 源目录
* @param endsFile 目标目录
*/
private static void getFileList(String fromFile, String endsFile)
{
File file = null;//先创建一个文件对象(被复制对象)
File file1 = null; //被复制的文件
FileInputStream fis = null;
DataInputStream dis = null;
File file2 = null; //作为复制后文件的暂时缓存
FileOutputStream fos = null;
DataOutputStream dos = null;
try {
file = new File(fromFile);//创建源文件对象
File[] files = file.listFiles();//获得文件列表
for (int i = 0; i < files.length; i++){
if (files[i].isDirectory()){ //判断是否为目录
File dir = new File(endsFile + "\\" + files[i].getName()); //创建目录
dir.mkdir(); //如果是目录就创建
//递归上一级目录
getFileList(fromFile + "\\" + files[i].getName(),
endsFile + "\\" + files[i].getName());
}
else{
//创建源目录下的文件对象
file1 = new File(files[i].toString());
fis = new FileInputStream(file1);
dis = new DataInputStream(fis);
//创建目标目录下的文件对象
file2 = new File(endsFile + "\\" + files[i].getName());
fos = new FileOutputStream(file2);
dos = new DataOutputStream(fos);
int len = 0;
while ((len = dis.read()) != -1){
//将源目录下的文件内容复制到目标目录下的文件中
dos.write(len);
}
System.out.println(endsFile + "\\" + files[i].getName());//把复制后的文件名及路径打印在控制台上,方便观察
}
}
}
catch (IOException e){
e.printStackTrace();
}finally{
if(fis != null){
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(dis != null){
try {
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}