等工作稳定了,我就想把JavaSE剩下的部分学完,然后把JavaEE部分学习一下,最后转向我的安卓,虽说安卓的热潮已经过了,但是其实我个人认为后期还会再来一次,而且是非常的普及,原因就是后期的居家智能设备,所以我想还会有更多的机会的。
那么今天下班,学习了一下Java编程中IO流的一些阶段性的练习,其实我已经把之前的都忘的超不多了,等后面我还要慢慢的复习一下。
那么是阶段性的练习,那么就该有一个题目,今天的题目就是从网上找的,内容大致为:
获取指定目录下,指定扩展名的文件(包含子目录中的),这些文件的绝对路径写入到一个文本文件中。简单的说,就是建立一个指定扩展名的文件的列表。
思路:
- 必须进行深度遍历;
- 要在遍历的过程中进行过滤,将符合条件的内容都存储到容器中;
- 对容器中的内容进行遍历,并将绝对路径写入到文件中。
代码如下:
import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.FilenameFilter; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class Text { public static void main(String[] args) { File dir = new File("java01"); FilenameFilter filter = new FilenameFilter(){ @Override public boolean accept(File dir, String name) { return name.endsWith(".java"); } }; List<File> list = new ArrayList<File>(); getFiles(dir, filter, list); File destFile = new File(dir,"javalist.txt"); write2file(list, destFile); } /** * 对指定目录中的内容进行深度遍历,并按照指定过滤器进行过滤, * 将过滤后的内容存储到指定容器List中。 * @param dir * @param filter * @param list */ public static void getFiles(File dir,FilenameFilter filter,List<File> list){ File[] files = dir.listFiles(); for(File file : files){ if (file.isDirectory()) { //递归 getFiles(file,filter,list); }else{ //对遍历到的文件进行过滤器的过滤,将符合条件的File对象存储到List集合中 if (filter.accept(dir, file.getName())) { list.add(file); } } } } /** * 将读取到的文件写入到文件中 * @param list * @param destFile * @throws IOException */ public static void write2file(List<File> list,File destFile){ BufferedWriter bufw = null; try { bufw = new BufferedWriter(new FileWriter(destFile)); for (File file : list) { bufw.write(file.getAbsolutePath()); bufw.newLine(); bufw.flush(); } } catch (Exception e) { throw new RuntimeException("写入失败"); }finally{ if(bufw!=null){ try { bufw.close(); } catch (Exception e2) { throw new RuntimeException("关闭失败"); } } } } }
其实大家多看看就能看懂的。多去回顾一下之前的知识,多练习一下你认为看不起眼的小程序。
评论前必须登录!
注册