14周作业
题目:
编写一个应用程序,输入一个目录和一个文件类型,显示该目录下符合该类型的所有文件。之后,将这些文件中的某一个文件剪切到另外一个目录中。
ps:第一次课请先完成前一部分。
text.java
import java.io.*; import java.util.Scanner; public class text { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); System.out.print("请输入文件路径:"); String s1 = sc.nextLine(); System.out.print("请输入文件格式后缀:"); String s2 = sc.nextLine(); File path = new File(s1);//文件路径 FilenameFilter endName = new getFilenames(s2);//文件后缀 String[] filenames = path.list(endName); System.out.println("一共有"+filenames.length+"个"+s2+"类型的文件!"); for(String name : filenames) {//循环输符合的文件名 System.out.println(name); } } } class getFilenames implements FilenameFilter{ String style ; getFilenames(String style){ this.style=style; } public boolean accept(File file, String name) { return name.endsWith(style); } }
结果:
题目二:完成读写操作
代码
/**剪切文件到另一目录 * 2个类3个方法 */ 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 Test { public static void main(String[] args) { Scanner reader = new Scanner(System.in); System.out.print("请输入目录:\n"); String way = reader.nextLine();//暂存目录 File file = new File(way);//获取输入的目录 String[] all = file.list();//调用无参list方法获取全部文件名 System.out.print("该目录下文件为:\n"); for(int i = 0;i<all.length;i++){//输出 System.out.print(all[i]+"\n"); } System.out.print("请输入该目录下要求的文件类型:\n"); type filetype = new type(reader.nextLine()); String[] Type = file.list(filetype);//调用参数为文件类型的list方法获取该类文件名 System.out.print("该目录下该文件类型的文件为:\n"); for(int i = 0;i<Type.length;i++){ System.out.print(Type[i]+"\n"); } System.out.print("请输入需要剪切的文件名:\n"); String cut = reader.nextLine();//暂存文件名 File cutfile = new File(way+"\\"+cut);//存入原文件 System.out.print("请输入该文件需要移动到的目录:\n"); 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 { inputStream.close(); bufferedWriter.close(); writer.close(); } catch (IOException e) { e.printStackTrace(); } } cutfile.delete();//删除原文件 } }
结果: