如何将一种或多种类型的文件从一个文件夹中筛选出来放入相对应的指定文件夹中,看这里...

题目:如何将一个文件夹(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