第14周作业

题目:编写一个应用程序,输入一个目录和一个文件类型,显示该目录下符合该类型的所有文件。之后,将这些文件中的某一个文件剪切到另外一个目录中。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();// 删除源文件
	}

}

运行结果




原文地址:https://www.cnblogs.com/ctt886/p/12005452.html