Java implementa a cópia de todos os arquivos em um diretório de nível único

Cenário do projeto:

A prática do Java IO流de copiar todos os arquivos em um diretório de nível único

Por exemplo: copie todos os arquivos da pasta do disco d para a pasta demodo disco d e insira o código da seguinte forma:copydemo

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

        // 获取数据源目录下的所有文件的File数组
        File[] fileArray = srcFolder.listFiles();

        // 遍历File数组得到每一个File对象
        for (File file : fileArray) {
    
    
            String name = file.getName(); // 获取文件名
            File newFile = new File(destFolder, name); // 获取文件路径

            copyFile(file, newFile);

        }

    }

    private static void copyFile(File file, File newFile) throws IOException {
    
    
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
        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();
    }
}

Observação:

Existem duas razões principais para usar fluxos de entrada e saída com buffer de byte no caso:
primeiro, é eficiente (em comparação com fluxos de entrada e saída de byte) e,
segundo, pode copiar qualquer tipo de arquivo, como txt, jpg, mp3, mp4, avi (em comparação com fluxos de entrada e saída de caracteres)


Referências:

Consulte o vídeo JavaSE de Liu Yi

Para copiar diretórios de vários níveis, você pode consultar os seguintes links e usar o pensamento recursivo:

Java implementa a cópia de todas as pastas e arquivos em diretórios de vários níveis

おすすめ

転載: blog.csdn.net/qq_39691492/article/details/129508408