第十四周作业
题目:编写一个应用程序,输入一个目录和一个文件类型,显示该目录下符合该类型的所有文件。之后,将这些文件中的某一个文件剪切到另外一个目录中。
源代码:
FileFilter.java
package a8_1; import java.io.File; import java.io.FilenameFilter; public class FileFilter implements FilenameFilter { //通过非抽象子类实现 String type; FileFilter(String type) //构造方法FileFilter() { this.type=type; } public boolean accept(File dir, String name) { //实现accept方法 return name.endsWith(type); } }
FILE_1.java
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; public class FILE_1 { public static void main(String[] args) { System.out.println("请输入显示目录以及一个文件类型:"); Scanner reader1=new Scanner(System.in); Scanner reader2=new Scanner(System.in); String com=reader1.nextLine(); String type=reader2.nextLine(); File file=new File(com); //创建一个文件对象,参数是需要获取的文件地址 FilenameFilter filter=new FileFilter(type); //设置文件的类型 String[] files = file.list(filter); //获取符合条件的文件名 for (String s : files) { System.out.println(s); //通过for循环输出目录 } /*以下代码主要实现文件的剪切功能 确定文件的位置*/ System.out.println("请输入要移动文件的绝对路径:"); Scanner reader4=new Scanner(System.in); String str2=reader4.nextLine(); File movename=new File(str2); //输入文件的新位置 System.out.println("请输入要移动到的位置:"); Scanner reader5=new Scanner(System.in); String str3=reader5.nextLine(); File fmove=new File(str3); try { fmove.createNewFile();//创建同名文件 } catch (IOException e) { e.printStackTrace(); } InputStream input=null; BufferedInputStream bis=null; Writer writer = null; BufferedWriter bw = null; String s1=""; //用于存储原文本内容 try { input = new FileInputStream(movename); bis = new BufferedInputStream(input); byte[] b = new byte[1024]; int count = 0; while((count = bis.read(b, 0, 1024))!=-1){ //用读取下一个字节的操作控制循环 s1=s1+new String(b, 0, count); } writer = new FileWriter(fmove); bw = new BufferedWriter(writer); bw.write(s1); //将内容写入到新的文本中 } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { bis.close(); input.close(); bw.close(); writer.close(); //依次关闭文件 } catch(IOException e) { e.printStackTrace(); } } movename .delete();//将原有文件删除 } }
运行结果:
(一)显示目录
(二)文件剪切