第14周作业

题目:编写一个应用程序,输入一个目录和一个文件类型,显示该目录下符合该类型的所有文件。之后,将这些文件中的某一个文件剪切到另外一个目录中。

ps:第一次课请先完成前一部分。

 代码:

文件筛选类:

public class FileFilter implements FilenameFilter {

    String type;

    FileFilter(String type) {
        this.type = type;
    }

    @Override
    public boolean accept(File dir, String name) {
        return name.endsWith(type);
    }
}

 

文件剪切类:

package org.ccut.pack_16;

import java.io.*;

public class FileCut {

    public boolean fileCut(File f1, File f2) throws IOException {
        BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f1));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(f2));
        int len = 0;
        byte[] b = new byte[1024];
        while ((len = bis.read(b)) != -1) {
            bos.write(b, 0, len);
        }
        bis.close();
        bos.close();
        // 拷贝完删除原来的文件
        fileDelete(f1);
        return true;
    }

    public void fileDelete(File f) {
        if (f.isFile()) {
            f.delete();
        } else {
            File[] arr = f.listFiles();
            for (int i = 0; i < arr.length; i++) {
                fileDelete(arr[i]);
            }
            f.delete();
        }
    }
}

 

测试类:

package org.ccut.pack_16;

import java.io.*;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) throws IOException {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入目录:");
        String path = in.next();
        System.out.println("请输入要筛选的文件类型:");
        String fileType = in.next();
        // 创建一个文件夹对象
        File dir = new File(path);
        // 调用定义的文件筛选器
        FilenameFilter filter = new FileFilter(fileType);
        // 获取筛选结果
        String[] files = dir.list(filter);
        //  打印筛选结果
        for (String file : files) {
            System.out.println(file);
        }

        System.out.println("请输入要移动到的目录:");
        String cutPath = in.next();
        FileCut cut = new FileCut();
        boolean isCut = cut.fileCut(new File(path + "//" + files[0]),
                new File(cutPath + "//" + files[0]));
        if (isCut) {
            System.out.println("文件已经剪切到" + cutPath);
        }

    }

}

 

 

运行结果:

筛选B盘下类型为chw的文件,

 

 

 

 

 

将jdk api 1.8_google.chw文件剪切到F盘,

剪切前:

 

剪切后:

 

 

 

 

posted @ 2019-12-05 15:41  20194680刘厚飞  阅读(211)  评论(0编辑  收藏  举报