package com.baidu.Collection;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test4 {
public static void copyFile(String srcPath,String destPath){
File srcFile=new File(srcPath);
File destFile=new File(destPath);
***destFile.getParentFile().mkdirs();***
byte[] buffer=new byte[1024];
try(FileInputStream fis=new FileInputStream(srcFile);
**FileOutputStream fos=new FileOutputStream(destFile)**;
){
while (srcFile != null) {
int length=fis.read(buffer);
if(length==-1)
break;
fos.write(buffer,0,length);
fos.flush();
}
}catch (IOException e){
e.printStackTrace();
}
}
public static void **copyDirectory(String srcPath,String destPath)**{
File src=new File(srcPath);
File dest=new File(destPath);
File[] files=src.listFiles();
for(File each:files){
if(each.isFile())
{
File s=new File(destPath,each.getName());
copyFile(each.getAbsolutePath(),s.getAbsolutePath());}
if(each.isDirectory()){
File s=new File(**destPath,each.getName());**
copyDirectory(each.getAbsolutePath(),s.getAbsolutePath());
}
}
}
public static void main(String[] args) {
copyDirectory("d:/1","d:/2");
}
}
调试了好久,代码终于通了,总结一下。
1.destFile.getParentFile().mkdirs();
①mkdirs()会帮你建立这个文件夹,注意假如是d:/1/2/1.txt这样的目录,1.txt默认也是文件夹。
2. FileOutputStream fos=new FileOutputStream(destFile),
①输出流会帮你建立文件,但是不会帮你建立上级目录,上级目录必须存在才行。所以在写的时候,报了FileNotFound
②输出流写到文件夹会报”拒绝访问“的错误,之前创了个文件目录,所以老报这个错。
3.copyDirectory(String srcPath,String destPath)
destPath,each.getName());
①despath,我之前直接里面放的destPath+each.getName(),注意!!‘ / ’文件目录这个符号忘了,还是用那个文件的有参构造器比较好。