题目:编写一个应用程序,输入一个目录和一个文件类型,显示该目录下符合该类型的所有文件。之后,将这些文件中的某一个文件剪切到另外一个目录中。ps:第一次课请先完成前一部分。
X类
package ccut.ch.fourteen;
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);
}
}
TestMain类
package ccut.ch.fourteen;
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 TestMain {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
System.out.println("请输入要查询的文件类型:");
File dir = new File("D:\java14"); //创建文件对象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();// 删除源文件
}
}
运行结果