个人博客
专注IT梦想的地方

Java编程IO流中的阶段性练习

等工作稳定了,我就想把JavaSE剩下的部分学完,然后把JavaEE部分学习一下,最后转向我的安卓,虽说安卓的热潮已经过了,但是其实我个人认为后期还会再来一次,而且是非常的普及,原因就是后期的居家智能设备,所以我想还会有更多的机会的。

那么今天下班,学习了一下Java编程中IO流的一些阶段性的练习,其实我已经把之前的都忘的超不多了,等后面我还要慢慢的复习一下。

那么是阶段性的练习,那么就该有一个题目,今天的题目就是从网上找的,内容大致为:

获取指定目录下,指定扩展名的文件(包含子目录中的),这些文件的绝对路径写入到一个文本文件中。简单的说,就是建立一个指定扩展名的文件的列表。

思路:

  1. 必须进行深度遍历;
  2. 要在遍历的过程中进行过滤,将符合条件的内容都存储到容器中;
  3. 对容器中的内容进行遍历,并将绝对路径写入到文件中。

代码如下:

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("关闭失败");
				}
				
			}
		}
	}	
}

其实大家多看看就能看懂的。多去回顾一下之前的知识,多练习一下你认为看不起眼的小程序。

赞(0) 打赏
未经允许,不得转载本站任何文章:智言个人博客 » Java编程IO流中的阶段性练习

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏