import java.io.*;
/**
* 拷贝目录
*/
public class CopyFile1 {
public static void main(String[] args) {
//要拷贝的目录
File fileInitial=new File("D:\\a");
//拷贝的目录
File fileResult=new File("C:\\");
//拷贝
copyFile(fileInitial,fileResult);
}
public static void copyFile(File file1,File file2){
//判断当前目标是否是文件来决定递归结束条件
if(file1.isFile()){
FileInputStream input=null;
FileOutputStream output=null;
try {
//输入输出对象创建
input=new FileInputStream(file1);
String Resultout=(file2.getAbsolutePath().endsWith("\\")?file2.getAbsolutePath():file2.getAbsolutePath()+"\\")
+file1.getAbsolutePath().substring(3);//表示要拷贝的地址
output=new FileOutputStream(Resultout);
//一边读一边写
byte[] bytes=new byte[1024*1024];//一次读取的长度
int count=0;
while ((count=input.read(bytes))!=-1){
output.write(bytes,0,count);
}
//输出流要刷新
output.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if(input!=null){
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(output!=null){
try {
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return;
}
File[] files=file1.listFiles();
for(File f:files){
if(f.isDirectory()){
//创建对应文件夹
String Initial=f.getAbsolutePath();//获取当前文件路径
//substring()方法为从那个地方开始截取字符串
//endsWith("\\")方法用来判断字符串是否以\\结尾
//(file2.getAbsolutePath().endsWith("\\")?file2.getAbsolutePath():file2.getAbsolutePath()+"\\")用来判断是否以\\结尾如果不是则加上\\
String Result=(file2.getAbsolutePath().endsWith("\\")?file2.getAbsolutePath():file2.getAbsolutePath()+"\\")
+Initial.substring(3);//表示要拷贝的地址
File newfile=new File(Result);
//exists()方法来判断对象是否存在
if(!newfile.exists()){
newfile.mkdirs();//如果不存在则创建
}
}
copyFile(f,file2);
}
}
}
java--IO--文件目录复制
最新推荐文章于 2021-05-24 20:35:12 发布