文件(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 }
运行结果: