迟到的第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)) ? "成功" : "失败"));
}
}
运行截图