IO
问题:实现目录的递归拷贝功能(包括目录下面的文件)
需求:
- 用户只需提供当前目录以及目的目录即可开始拷贝
- 拷贝文件需输出拷贝内容
下面是我所编写的代码
Copy.java文件
package com.jvstudy.day07.text1;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* Copy类:实现目录的递归拷贝功能
*/
public class Copy {
/**
* @param path 当前目录
* @param disPath 目的目录
*/
public static void copy(String path,String disPath) {
File dir = new File(path);
File distPath = new File(disPath+dir.getName()); //合成目的目录并生成File对象
distPath.mkdirs();
File[] dirs = dir.listFiles();
for(File dirOne:dirs) {
if(dirOne.isDirectory()) { //如果是目录则递归copy
copy(dirOne.getAbsolutePath(),distPath+"/");
}
else { //创建空文件
File fileDisPath = new File(distPath+"/"+dirOne.getName());
try {
fileDisPath.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
copyFile(dirOne,fileDisPath);
}
}
}
/**
* copeFile 复制文件
* @param file 当前文件对象
* @param disFile 目标文件对象
*/
public static void copyFile(File file,File disFile) {
FileInputStream fis = null;
FileOutputStream fos = null;
byte[] copytor = new byte[1024]; //缓存字节区
try {
int temp=0;
fis = new FileInputStream(file);
fos = new FileOutputStream(disFile,true);
System.out.printf("Copying %s------------------------------------\n",file.getAbsolutePath());
try {
while((temp=fis.read(copytor)) != -1) {
fos.write(copytor, 0, temp);
System.out.print(new String(copytor,0,temp));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
fis.close(); //关闭字节流
fos.flush();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.printf("Copying %s is over---------------------------\n",file.getAbsolutePath());
}
}
}
测试
package com.jvstudy.day07.text1;
public class test1 {
/**
* main
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Copy.copy("D:\\Java Project\\Learning\\src\\com","E:/");
}
}