第14周作业

题目:

编写一个应用程序,输入一个目录和一个文件类型,显示该目录下符合该类型的所有文件。之后,将这些文件中的某一个文件剪切到另外一个目录中。

代码:

1、Select类

class Select implements FilenameFilter{
	
	String type;
	Select(String type){
		this.type=type;
	}

	public boolean accept(File dir, String name) {
		return name.endsWith(type);
	}
}

  

2、主类

import java.util.*;
import java.io.*;

public class test {
	public static void main(String[] args) throws IOException {
		//查找指定目录下的全部文件
		System.out.println("请输入要查询的目录:");
		Scanner r=new Scanner(System.in);
		String SearchDir=r.nextLine();
		File f=new File(SearchDir);
		String[] AllFiles=f.list();
		for(String a:AllFiles){
			System.out.println(a);
		}
		//筛选当前目录下,指定类型的文件
		System.out.println();
		System.out.println("请输入要筛选的文件类型:");
		String type=r.nextLine();//接收输入的文件类型
		Select s=new Select(type);
		String[] SelFiles=f.list(s);
		for(String a:SelFiles){
			System.out.println(a);
		}
		//剪切操作
		System.out.println();
		System.out.println("请输入需要剪切的文件名:");
		String name=r.nextLine();
		File CutFile=new File(SearchDir,name);//此对象是原目录下的原文件
		System.out.println("请输入剪切到的目录:");
		String NewPath=r.nextLine();//接收新路径
		File NewFile=new File(NewPath,name);//此对象是新目录下的同名新文件
	
		try {
			NewFile.createNewFile();//通过方法,创建一个新的文件
		} catch (IOException e) {
			e.printStackTrace();
		}

		BufferedInputStream bin=null;
		BufferedWriter bw=null;
		int count=0;
		byte[]b=new byte[1024];
		try {
			
			bin=new BufferedInputStream(new FileInputStream(CutFile));
			String str="";//接收原文件中的内容
			while((count=bin.read(b,0,1024))!=-1){
				str=str+new String(b);
			}
			
			bw=new BufferedWriter(new FileWriter(NewFile,true));
			bw.write(str);//将接收的内容写入新文件中
		
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		finally{
				bin.close();
				bw.close();
		}
		CutFile.delete();//删除源文件
		
		
	}

}

  

运行结果:

1、所查询目录的初始状态

2、目标目录的初始状态

3、程序运行结果

4、程序运行后,目标目录状态

5、原目录的状态

posted @ 2019-12-07 14:03  胡烙懿  阅读(138)  评论(0编辑  收藏  举报