1. 程式人生 > 其它 >java實現單級資料夾和多級資料夾的複製

java實現單級資料夾和多級資料夾的複製

技術標籤:java基礎

單級資料夾的複製

public class file9 {
    public static void main(String[] args) throws IOException {
        File src = new File("C:\\case");//源
        String name = src.getName();
        //System.out.println(name);
        File destfolder = new File("C:\\itcast", name);//目的
if (!destfolder.exists()) { destfolder.mkdir(); } File[] files = src.listFiles(); for (File srcfile : files) { String name1 = srcfile.getName(); System.out.println(name1); File destFile = new File(destfolder, name1); copy
(srcfile, destFile); } } private static void copy(File srcfile, File destFile) throws IOException { BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcfile)); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile)); byte
[] bys = new byte[1024]; int len; while ((len = bis.read(bys)) != -1) { bos.write(bys, 0, len); } bos.close(); bis.close(); } }

多級資料夾的複製

public class file10 {
    public static void main(String[] args) throws IOException {
        File srcFile = new File("C:\\itcast");//源
        File destFile = new File("C:\\case");//目的
        copy(srcFile, destFile);
    }

    private static void copy(File srcFile, File destFile) throws IOException {//複製資料夾
        if (srcFile.isDirectory()) {//是目錄,遞迴
            String name = srcFile.getName();
            File newFolder = new File(destFile, name);
            if (!newFolder.exists()) {
                newFolder.mkdir();
            }
            File[] files = srcFile.listFiles();
            for (File file : files) {
                copy(file, newFolder);
            }
        } else {//是檔案,直接複製
            File newFile = new File(destFile, srcFile.getName());
            copyFile(srcFile, newFile);

        }

    }

    private static void copyFile(File srcfile, File destFile) throws IOException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcfile));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));
        byte[] bys = new byte[1024];
        int len;
        while ((len = bis.read(bys)) != -1) {
            bos.write(bys, 0, len);
        }
        bos.close();
        bis.close();
    }
}