第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盘,
剪切前:
剪切后: