目录拷贝

it2023-05-11  71

目录拷贝

package com; import java.io.*; /** * 拷贝目录 */ public class CopyAll { public static void main(String[] args) { //拷贝源 File srcFile = new File("D:\\test.txt"); //拷贝目标 File destFile =new File("D:\\a"); //调用方法拷贝 copyDir(srcFile,destFile); } /**拷贝目录 * @param srcFile * @param destFile */ private static void copyDir(File srcFile, File destFile) { if (srcFile.isFile()){//srcFile是一个文件,递归结束 FileInputStream in =null; FileOutputStream out=null; try {//读这个文件 in = new FileInputStream(srcFile); String path=(destFile.getAbsolutePath().endsWith("\\")?destFile.getAbsolutePath():destFile.getAbsolutePath()+"\\")+srcFile.getAbsolutePath().substring(3); //写到这个文件 out= new FileOutputStream(path); //一边读一边写 byte[] bytes = new byte[1024 * 1024];//一次复制1mb int readCount=0; while ((readCount=in.read(bytes))!=-1){ out.write(bytes,0,readCount); } out.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { if (in!=null){ try { in.close(); } catch (IOException e) { e.printStackTrace(); }if (out!=null){ try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } } return; } //获取源下面的子目录 File[] files = srcFile.listFiles(); System.out.println(files.length); for(File file:files){ // System.out.println(file.getAbsolutePath());//获取文件或目录绝对路径 if (file.isDirectory()){//新建对应目录 String srcDir = file.getAbsolutePath(); String destDir=(destFile.getAbsolutePath().endsWith("\\")?destFile.getAbsolutePath():destFile.getAbsolutePath()+"\\")+srcDir.substring(3); File newFile=new File(destDir); if (!newFile.exists()){ //创建目录 newFile.mkdir(); } } //递归调用 copyDir(file,destFile); } } }
最新回复(0)