注意拷贝路径和复制路径的
用endwith()来判断目标路径的结尾
用substring()来剪切复制源路径
用三目运算符简化代码
package comstudy; import java.io.*; public class copydirall { public static void main(String [] agrs){ //copy源 File srcFile =new File("D:\\testcopy"); //copy目标 File destFile = new File("C:\\a\\b\\c\\"); //调用方法拷贝 copyDir(srcFile,destFile); } private static void copyDir(File srcFile,File destFile){ if(srcFile.isFile()){ 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]; 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(out != null){ try { out.close(); }catch (IOException e){ e.printStackTrace(); } } if(in != null){ try { in.close(); }catch (IOException e){ e.printStackTrace(); } } } return; } //获取源下面的子目录 File[] files = srcFile.listFiles(); for(File file : files){ // System.out.println(file.getAbsolutePath()); if(file.isDirectory()){ String desDir = (destFile.getAbsolutePath().endsWith("\\") ? destFile.getAbsolutePath():destFile.getAbsolutePath()+ "\\") +file.getAbsolutePath().substring(3); File newFile = new File(desDir); if(!newFile.exists()){ newFile.mkdirs(); } } copyDir(file,destFile); } } }
)来判断目标路径是否以双反斜结尾
用