题目1(前一部分):编写一个应用程序,输入一个目录输出显示该目录下的所有文件。再输入一个类型,将该目录符合该类型的文件进行显示。
一、源程序
filework.java
/**文件查找 2个类3个方法 * (1)手动输入目录 列出所有文件 * (2)指定某类型 列出该类型文件 */ package cn.edu.ccut.w1204; import java.io.File; import java.io.FilenameFilter; import java.util.Scanner; class type implements FilenameFilter{//创建FilenameFilter接口子类 String str = null; type(String str){//定义构造方法 this.str = "."+str; } public boolean accept(File dir, String name) {//重写accept方法 return name.endsWith(str);//匹配后面字段 } } public class filework { public static void main(String[] args) { Scanner reader = new Scanner(System.in); System.out.print("请输入目录 "); File file = new File(reader.nextLine());//获取输入的目录 String[] all = file.list();//调用无参list方法获取全部文件名 System.out.print("该目录下文件为: "); for(int i = 0;i<all.length;i++){//输出 System.out.print(all[i]+" "); } System.out.print("请输入该目录下要求的文件类型 "); type filetype = new type(reader.nextLine()); String[] Type = file.list(filetype);//调用参数为文件类型的list方法获取该类文件名 System.out.print("该目录下该文件类型的文件为: "); for(int i = 0;i<Type.length;i++){ System.out.print(Type[i]+" "); } } }
二、成功界面截图
题目2(完全版):在上一题基础上,将这些文件中的某一个文件剪切到另外一个目录中。
一、源程序
/**剪切文件到另一目录 * 2个类3个方法 */ package cn.edu.ccut.w1204t2; 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; class type implements FilenameFilter{//创建FilenameFilter接口子类 String str = null; type(String str){//定义构造方法 this.str = "."+str; } public boolean accept(File dir, String name) {//重写accept方法 return name.endsWith(str);//匹配后面字段 } } public class cut { public static void main(String[] args) { Scanner reader = new Scanner(System.in); System.out.print("请输入目录: "); String way = reader.nextLine();//暂存目录 File file = new File(way);//获取输入的目录 String[] all = file.list();//调用无参list方法获取全部文件名 System.out.print("该目录下文件为: "); for(int i = 0;i<all.length;i++){//输出 System.out.print(all[i]+" "); } System.out.print("请输入该目录下要求的文件类型: "); type filetype = new type(reader.nextLine()); String[] Type = file.list(filetype);//调用参数为文件类型的list方法获取该类文件名 System.out.print("该目录下该文件类型的文件为: "); for(int i = 0;i<Type.length;i++){ System.out.print(Type[i]+" "); } System.out.print("请输入需要剪切的文件名: "); String cut = reader.nextLine();//暂存文件名 File cutfile = new File(way+"\"+cut);//存入原文件 System.out.print("请输入该文件需要移动到的目录: "); String cutway = reader.nextLine(); //暂存目录 File cutlist = new File(cutway);//存入目录 File newfile = new File(cutway+"\"+cut);//存入新目录下新文件 try { newfile.createNewFile();//创建同名文件 } catch (IOException e) { e.printStackTrace(); } InputStream inputStream = null;//读出原文件内容对象创建 BufferedInputStream bufferedInputStream = null; String data="";//内容暂存器 Writer writer = null;//写入新文件内容对象创建 BufferedWriter bufferedWriter = null; try { inputStream = new FileInputStream(cutfile); bufferedInputStream = new BufferedInputStream(inputStream); byte[] content = new byte[1024];//存储内容 int count = 0;//记录长度 while((count = bufferedInputStream.read(content, 0, 1024))!=-1){ data=data+new String(content, 0, count);//遍历到字节存入字符串 } writer = new FileWriter(newfile); bufferedWriter = new BufferedWriter(writer); bufferedWriter.write(data);//字符串写入新文件 } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally{ try { bufferedInputStream.close();//关闭流 inputStream.close(); bufferedWriter.close(); writer.close(); } catch (IOException e) { e.printStackTrace(); } } cutfile.delete();//删除原文件 } }
二、成功界面截图