java實現拷貝目錄以及目錄下的檔案
阿新 • • 發佈:2022-01-06
注意拷貝路徑和複製路徑的
用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); } } }
)來判斷目標路徑是否以雙反斜結尾
用