一个坏掉的番茄
Published on 2017-09-02 11:31 in 暂未分类 with Simon Ma

迟到的第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<File> getAllFiles(File dir, Predicate<File> predicate) {
		ArrayList<File> 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<File> 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)) ? "成功" : "失败"));
	}
}

运行截图



posted @ 2019-12-05 15:19  SimonMa  阅读(131)  评论(0编辑  收藏  举报