Java는 다단계 디렉토리의 모든 폴더 및 파일 복사를 구현합니다.

프로젝트 시나리오:

IO流다단계 디렉토리의 모든 폴더와 파일을 복사하는 Java의 관행

예: demosd 드라이브 아래의 폴더에 있는 모든 폴더와 파일을 copydemosd 드라이브 아래의 폴더로 복사합니다.
요점: 폴더를 복사하고 递归
코드를 사용하여 다음을 입력합니다.

import java.io.*;

public class CopyFoldersDemo {
    
    
    public static void main(String[] args) throws IOException {
    
    
        // 封装数据源File
        File srcFile = new File("d:\\demos");
        // 封装目的地File
        File destFile = new File("d:\\copydemos");
        // 如果目的地文件夹不存在就创建
        if (!destFile.exists()) {
    
    
            destFile.mkdir();
        }

        // 复制文件夹的功能
        copyFolder(srcFile, destFile);
    }

    private static void copyFolder(File srcFile, File destFile) throws IOException {
    
    
        if (srcFile.isDirectory()) {
    
    
            // 文件夹
            File newFolder = new File(destFile, srcFile.getName());
            newFolder.mkdir();

            // 获取该File对象下的所有文件或文件夹File对象
            File[] fileArray = srcFile.listFiles();
            for (File file : fileArray) {
    
    
                copyFolder(file, newFolder);
            }
        } else {
    
    
            // 文件
            File newFile = new File(destFile, srcFile.getName());
            copyFile(srcFile, newFile);
        }
    }

    private static void copyFile(File srcFile, File newFile) throws IOException {
    
    
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile));

        byte[] bys = new byte[1024];
        int len = 0;
        while ((len = bis.read(bys)) != -1) {
    
    
            bos.write(bys, 0, len);
        }
        bos.close();
        bis.close();
    }
}


주목:

이 경우 바이트 버퍼링된 입력 및 출력 스트림을 채택하는 두 가지 주요 이유가 있습니다.
첫째는 효율적이고(바이트 입력 및 출력 스트림에 비해) 둘째
, txt, jpg, mp3와 같은 모든 유형의 파일을 복사할 수 있습니다. , mp4, avi(문자 입력 및 출력 스트림과 비교)

Java는 단일 레벨 디렉토리의 모든 파일 복사를 구현합니다.
Liu Yi의 JavaSE 비디오를 참조하십시오.

추천

출처blog.csdn.net/qq_39691492/article/details/129720418