第14周作业

一、题目

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

二、代码实现

  1 /**
  2  * FilenameFilter检查文件类型是否符合
  3  * String[]返回该类型的所有文件
  4  * accept方法判断后缀知否和输入的相同
  5  * 创建输入输出流的字节对象
  6  * 对数组中的内容进行遍历写出及读入
  7  * 关闭字节流,删除原目录下的文件
  8  */
  9 package muluwenjian;
 10 import java.io.*;
 11 import java.util.*;
 12 
 13 public class cata {
 14 
 15     public static void main(String[] args) {
 16         // TODO Auto-generated method stub
 17         Scanner reader = new Scanner(System.in);
 18         System.out.println("输入需要查找的文件路径:");
 19         String s = reader.nextLine();
 20         File d = new File(s);
 21         
 22         System.out.println("输入需要查找的文件类型:");
 23         String t = reader.nextLine();
 24         
 25         FilenameFilter obj = new X(t);
 26         String[] filenames = d.list(obj);
 27         
 28         for(String name : filenames) {
 29             System.out.println(name);
 30         }
 31         
 32         System.out.println("输入要剪切的文件名:");
 33         String b = reader.nextLine();
 34         System.out.println("输入要存入的位置:");
 35         String c = reader.nextLine();
 36         
 37         File file1 = new File(s + "\\" + b);
 38         File file2 = new File(c + b);
 39         File file3 = new File(c + b);
 40         
 41         //System.out.println(file1);
 42         
 43         //if(file2.exists()) {
 44         //    file1.deleteOnExit();
 45         //}
 46         
 47         try {            
 48             file2.createNewFile();        
 49             } 
 50         catch (IOException e) {
 51             e.printStackTrace();
 52             }
 53         
 54         cutFile(file1, file2);
 55         }
 56     
 57     public static void cutFile(File file1, File file2){
 58         
 59         FileOutputStream fileOutputStream = null;
 60         InputStream inputStream = null;
 61         byte[] bytes = new byte[1024];
 62         int temp = 0;
 63         
 64         try {
 65             inputStream = new FileInputStream(file1);
 66             fileOutputStream = new FileOutputStream(file2);
 67             
 68             while((temp = inputStream.read(bytes)) != -1){
 69                 fileOutputStream.write(bytes, 0, temp);
 70                 fileOutputStream.flush();
 71                 }
 72             
 73             }catch (FileNotFoundException e) {
 74                 e.printStackTrace();
 75             
 76             }catch (IOException e) {
 77                 e.printStackTrace();
 78             
 79             }finally{
 80                 try {
 81                     inputStream.close();
 82                     fileOutputStream.close();
 83                     if(file2.exists()) {
 84                         System.out.println("剪切成功!");
 85                         file1.delete();
 86                     }
 87                     
 88                 } catch (IOException e) {
 89                     e.printStackTrace();
 90                 }
 91         }
 92             
 93     }
 94 
 95 }
 96 class X implements FilenameFilter{
 97     String type;
 98     
 99     X(String type){
100         this.type = type;
101     }
102     
103     public boolean accept(File file, String name) {
104         return name.endsWith(type);
105     }
106 }

三、运行结果截图

第14周作业_第1张图片

你可能感兴趣的:(第14周作业)