第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 }
三、运行结果截图