迟到的第14周作业

题目描述

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

源代码

package homework.fourteen;

import java.io.File;
import java.util.ArrayList;
import java.util.Objects;
import java.util.Random;
import java.util.Scanner;
import java.util.function.Predicate;

public class Main {
    public static boolean existDir(String path) {
        File dir = new File(path);
        return (dir.exists() && dir.isDirectory());
    }

    public static ArrayList getAllFiles(File dir, Predicate predicate) {
        ArrayList files = new ArrayList<>();
        for (File file : Objects.requireNonNull(dir.listFiles())) {
            if (file.isDirectory()) {
                files.addAll(getAllFiles(file, predicate));
            } else if (predicate.test(file)) {
                files.add(file);
            }
        }
        return files;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入所查找的目录与文件类型:");
        String path = scanner.nextLine();
        final String ext = scanner.nextLine();
        if (!existDir(path)) {
            System.err.println("请输入正确的目录.");
            return;
        }
        ArrayList files = getAllFiles(new File(path), file -> file.getName().endsWith("." + ext));
        files.stream().map(File::getPath).forEach(System.out::println);

        System.out.println("请输入某一文件将要剪切到的目录:");
        path = scanner.nextLine();
        if (!existDir(path)) {
            System.err.println("请输入正确的目录.");
            return;
        }
        File file = files.get(new Random().nextInt(files.size()));
        System.out.println("某一文件为: " + file.getPath());
        final String newFileName = path + File.separator + file.getName();
        System.out.println("文件剪切" + (file.renameTo(new File(newFileName)) ? "成功" : "失败"));
    }
}

运行截图

迟到的第14周作业_第1张图片
迟到的第14周作业_第2张图片
迟到的第14周作业_第3张图片

你可能感兴趣的:(迟到的第14周作业)