文件(file 类)

题目:

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

代码:

File_Demo

 1 /**
 2  * 包含两个类,一个主类一个fileacc类使用了FilenameFilter接口;
 3  */
 4 package cn.edu.ccut;
 5 import java.io.*;
 6 import java.util.*;
 7 
 8 public class File_Demo {
 9     public static void main(String[] args) {
10         System.out.println("请输入文件目录:");
11         Scanner reader = new Scanner(System.in);
12         String filename = reader.nextLine();
13         File fl = new File(filename);
14         System.out.println("请输入想要查找的文件类型:");
15         String Filetype = reader.nextLine();
16         FilenameFilter acc= new fileacc(Filetype); //接口回调获取文件后缀名;
17         String filelist[] = fl.list(acc); //获取所有与后缀名相同的方法存入filelist数组中;
18         System.out.println("目录下共有"+filelist.length+"个"+Filetype+"文件");
19         for(int i = 0 ; i < filelist.length ; i++){
20             System.out.println(filelist[i]);
21         }
22         System.out.println("请输入需要剪切的文件名:");
23         String cut = reader.nextLine();
24         System.out.println("请输入需要剪切至那个目录");
25         String cut_catalogue = reader.nextLine();
26         CutFile(filename+"\\"+cut,cut_catalogue+"\\"+cut); //传递参数为目录+文件名;
27     }
28     public static void CutFile(String name , String catalogue){
29         File file1 = new File(name);
30         File file2 = new File(catalogue);
31         FileInputStream in = null;
32         FileOutputStream out = null;
33         byte[] bytes = new byte[1024];
34         int count = 0 ;
35         try {
36             file2.createNewFile(); //在新目录下创建新文件;
37             in = new FileInputStream(file1);
38             out = new FileOutputStream(file2);
39             while((count = in.read(bytes, 0, 1024)) != -1){ //将原来文件内容读写到新的文件中
40                 out.write(bytes, 0, count);
41                 out.flush();
42             }
43         } catch (FileNotFoundException e) {
44             e.printStackTrace();
45         }catch (IOException e) {
46             e.printStackTrace();
47         }finally{            
48             if(in != null){
49                 try {
50                     in.close();
51                 } catch (IOException e) {
52                     e.printStackTrace();
53                 }
54             }
55             if(out != null)
56                 try {
57                     out.close();
58                 } catch (IOException e) {
59                     e.printStackTrace();
60                 }
61         }
62         file1.delete(); //删除原文件
63     }
64 }
65 class fileacc implements FilenameFilter{
66     String str;
67     fileacc(String str){ //构造方法;
68         this.str = str;
69     }
70     public boolean accept(File dir, String name) {    //实现accept方法    ;    
71         return name.endsWith(str);
72     }        
73 }

 

运行结果:

 

 

 

posted @ 2019-12-04 22:01  chris丶w  阅读(316)  评论(0编辑  收藏  举报