迟到的第14周作业

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

注释部分:

创建一个string的对象s,用来存储要查找字符目录,定义一个主类和方法类

定义一个异常类创建一个String filename[]数组将所有的文件名放入数组里

并将查询的文件放入数组中

 

 

代码部分


package bb;

import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.io.InputStream;
import java.io.Writer;
import java.util.Scanner;


public class Test {

    /**
     * 编写一个应用程序,输入一个目录和一个文件类型,显示该目录下符合该类型的所有文件。
     * 之后,将这些文件中的某一个文件剪切到另外一个目录中。
     */
    public static void main(String[] args) {
        Scanner input=new Scanner(System.in); 
        
        System.out.println("请输入文件目录(如D:\\\\java)");
        String s=input.nextLine();
        Exception e1=new Exception();//定义一个异常类
        
        File fi=new File(s);
        String filename[]=fi.list();//将所有的文件名放入数组里
        for(String name:filename){
            System.out.println(name);
        }
         System.out.println("输入查询后缀:");
         FileAccept filew = new FileAccept(input.nextLine());
            String filename1[]=fi.list(filew);//将查询后的文件名放入数组里
            for(String name:filename1){
                System.out.println(name);
            }
        
        System.out.println("请输入需要剪切的文件名:");
        String jq=input.nextLine();
        File jqfile=new File(fi+"\\"+jq);//存入的原文件
        
        System.out.println("请输入要移动的文件目录(如:lang)");
        String jqway=input.nextLine();
        File jqlist=new File(jqway);//存入目录
        File newfile=new File(jqway+"\\"+jq);//存入新目录下的新文件
        
         try {
             newfile.createNewFile();//创建新文件
         } catch (IOException e) {
             e.printStackTrace();
         }
         InputStream inputStream = null;
         BufferedInputStream bufferedInputStream = null;
         String filedata="";
         Writer writer = null;
         BufferedWriter bufferedWriter = null;
  
        try {
             inputStream = new FileInputStream(jqfile);
             bufferedInputStream = new BufferedInputStream(inputStream);
             byte[] b = new byte[1024];
             int count = 0;
             while((count = bufferedInputStream.read(b, 0, 1024))!=-1){
                 filedata=filedata+new String(b, 0, count);//遍历到字节存入字符串
             }
             writer = new FileWriter(newfile);
             bufferedWriter = new BufferedWriter(writer);
             bufferedWriter.write(filedata);//字符串写入新文件
         } catch (FileNotFoundException e11) {
             e11.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }finally{
             try {
                 bufferedInputStream.close();//关闭流
                 inputStream.close();
                 bufferedWriter.close();
                 writer.close();
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
         jqfile.delete();//删除原文件
    
       }
    }
    
class FileAccept implements FilenameFilter{
    String str=null;
    FileAccept(String st){
        str="."+st;
    }
     
    public boolean accept(File fi, String name) {
        
        
        
        return name.endsWith(str);//尾部查询
    }
}
测试运行







posted @ 2019-12-06 13:18  諪諪諪  阅读(170)  评论(0编辑  收藏  举报