迟到的第14周作业
题目:编写一个应用程序,输入一个目录和一个文件类型,显示该目录下符合该类型的所有文件。之后,将这些文件中的某一个文件剪切到另外一个目录中。
ps:第一次课请先完成前一部分。
X类型:
package hj; import java.io.File; import java.io.FilenameFilter; class X implements FilenameFilter { String type; X(String type){ this.type=type; } @Override public boolean accept(java.io.File dir, String name) { // TODO Auto-generated method stub return name.endsWith(type); } }
Test类:
package hj; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.FilenameFilter; import java.io.IOException; import java.util.Scanner; public class Test { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub System.out.println("请输入要查询的文件类型:"); File dir = new File("D:\\java"); //创建文件对象dir Scanner scan = new Scanner(System.in); String type = scan.nextLine(); //接收输入查询文件类型 X f = new X(type); String[] Files = dir.list(f); //用字符串形式按type类型返回目录下的文件 for (String name : Files) { System.out.println(name); } System.out.println("请输入要剪切的文件名:"); String CFname = scan.nextLine(); System.out.println("请输入新的目录:"); String Path = scan.nextLine(); File cf = new File(Path, CFname);// 此对象是新目录下的同名新文件 BufferedInputStream bin = null; BufferedWriter bw = null; int count = 0; byte[] b = new byte[1024]; try { cf.createNewFile(); bin = new BufferedInputStream(new FileInputStream(cf)); String str = "";// 接收原文件中的内容 while ((count = bin.read(b, 0, 1024)) != -1) { str = str + new String(b); } bw = new BufferedWriter(new FileWriter(cf, true)); bw.write(str);// 将接收的内容写入新文件中 } catch (IOException e) { e.printStackTrace(); } finally { bin.close(); bw.close(); } cf.delete();// 删除源文件 } }
运行截图: