思路:列出当前文件夹下的所有内容如果是文件则复制到新的文件夹下,如果是文件夹,则继续列出文件列表,执行前面的操作,这里就要递归了
/**
* 把oldPath目录下的文件和文件夹复制到newPath目录下
* @param oldPath
* @param newPath
* @throws IOException
*/
public static void copyDir(String oldPath,String newPath) throws IOException{
//先判断路径是不是带分隔符,如果没有就加上
if(!newPath.endsWith(File.separator)){
newPath = newPath+File.separator;
}
//将文件或文件夹封装成File对象
File oldDir = new File(oldPath);
File newDir;
//当前文件夹下的列表
File[] files = oldDir.listFiles();
for(File f:files){
if(f.isDirectory()){
//如果是文件夹,递归
String dirName = f.getName();
newDir = new File(newPath+f.getName());
newDir.mkdirs();
copyDir(f.getAbsolutePath(),newDir.getAbsolutePath());
}
if(f.isFile()){
//如果是文件,则复制到新的文件夹下
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newPath+f.getName()));
byte[] buf = new byte[1024];
int len = 0;
while((len=bis.read(buf))!=-1){
bos.write(buf, 0, len);
bos.flush();
}
bos.close();
bis.close();
}
}
}
|