フォルダーから 1 つまたは複数の種類のファイルをフィルター処理し、対応する指定フォルダーに配置する方法については、こちらを参照してください...

トピック: フォルダー (D:\demo\txt_mp3) 内の .txt ファイルと .mp3 ファイルを除外し、対応する (D:\txt) フォルダーと (D:\mp3) フォルダーにそれぞれ配置する方法 ?

package ex.ex_字节流;

import java.io.*;

/**
 * @author yyh on 2020/4/18 21:30
 */
public class ex_10 {
    
    
    public static void main(String[] args) {
    
    
        File txt_mp3 = new File("D:\\demo\\txt_mp3");
        String[] list = txt_mp3.list( );
        System.out.println(txt_mp3.getName() + "下的内容为:");
        for (String s : list) {
    
    
            System.out.println(" |--" + s );
        }

        File txt = new File("D:\\txt");//如果d盘下没有txt这个文件夹,则新建一个
        if (!txt.exists()) {
    
    
            txt.mkdir();
        }
        File[] files = txt.listFiles( );
        System.out.println(txt.getName() + "目录下的内容为:");//因为此文件夹是新建的,里面没有任何东西,所以没有内容
        for (File file : files) {
    
    
            System.out.println(" |--" + file );
        }

        File mp3 = new File("D:\\mp3");//如果d盘下没有mp3这个文件夹,则新建一个
        if (!mp3.exists()) {
    
    
            mp3.mkdir();
        }
        File[] files2 = mp3.listFiles( );
        System.out.println(mp3.getName() + "目录下的内容为:");//因为此文件夹是新建的,里面没有任何东西,所以没有内容
        for (File file : files2) {
    
    
            System.out.println(" |--" + file );
        }

        File[] txtFiles = txt_mp3.listFiles((pathname -> pathname.getName( ).endsWith(".txt")));//上一篇博文中有讲到如何筛选文件,这里不再重述
        for (File txtFile : txtFiles) {
    
    
        //txtFile是字符型文件,用BufferedReader、BufferedWriter 这些字符流包装后进行读、写效率更高,字符型文件(纯文本文件):*.txt,*.java, *.html,*.js, *.css, *.xml …
            try (BufferedReader br = new BufferedReader(new FileReader(txtFile));
                 BufferedWriter bw = new BufferedWriter(new FileWriter("d:" + File.separator + txt.getName() + File.separator + txtFile.getName()))
            ){
    
    
                String s;
                while ((s = br.readLine( )) != null) {
    
    
                    bw.write(s);
                    bw.newLine();
                }

            }catch (IOException e){
    
    
                e.printStackTrace();
            }
        }
        File[] files3 = txt.listFiles( );
        System.out.println("复制后" +txt.getName() + "目录下的内容为:");
        for (File file : files3) {
    
    
            System.out.println(" |--" + file );
        }

        File[] mp3Files = txt_mp3.listFiles((File dir, String name) -> name.endsWith(".mp3"));
        for (File mp3File : mp3Files) {
    
    
        //mp3File是二进制文件,要用FileInputStream、FileOutputStream 这些字节流来读写二进制文件:如图片、音频、视频等
             try(FileInputStream in = new FileInputStream(mp3File);
                FileOutputStream out = new FileOutputStream("d:" + File.separator + mp3.getName() + File.separator + mp3File.getName())
            ){
    
    
                byte[] bytes = new byte[1024];
                int length = -1;
                while ((length = in.read(bytes)) != -1) {
    
    
                    out.write(bytes, 0, length);
                }
            } catch (FileNotFoundException e) {
    
    
                e.printStackTrace( );
            } catch (IOException e) {
    
    
                e.printStackTrace( );
            }
        }
        File[] files4 = mp3.listFiles( );
        System.out.println("复制后" +mp3.getName() + "目录下的内容为:");
        for (File file : files4) {
    
    
            System.out.println(" |--" + file );
        }
    }
}

出力は次のとおりです。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/qq_45067943/article/details/105607717