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();
    }
}


述べる:

この場合にバイト バッファリングされた入力ストリームと出力ストリームを使用する主な理由は 2 つあります。1
つは効率的であること (バイト入力ストリームと出力ストリームと比較して)、2
つ目は、txt、jpg、mp3 などのあらゆるタイプのファイルをコピーできることです。 mp4、avi (文字入力および出力ストリームとの比較)

Java は、単一レベルのディレクトリ内のすべてのファイルをコピーする機能を実装しています。Liu
Yi の JavaSE ビデオを参照してください。

おすすめ

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