天天看点

javaday51_IO流_IO综合练习

package java_Studing_day51_IO流11_综合练习;

import java.io.BufferedReader;

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 IoPractice1 {

    public static void main(String[] args) {

// TODO Auto-generated method stub

     //给定目录或者盘符  

  File dir=new File("F:\\");

 //描述一个过滤器

  FilenameFilter filter=new FilenameFilter(){

      public boolean accept(File dir,String name){

//f返回以.jpg结尾的文件

 return name.endsWith(".java");

      }

  };

  //创建arraylist容器,arraylist长度可变的数组结构列表

  List<File> list=new ArrayList<File>();

  getFile(dir,filter,list);

  //指定结果存放的位置

  File destFile=new File(dir,"txtFilePath1.txt");

  writeToFile(list,destFile);

  File f=new File(dir,"javaFilePath.txt");

  destFile.renameTo(f);

    }

 public static void getFile(File dir,FilenameFilter filter,List<File> list){

    //获取指定目录下的文件 ,返回抽象路径名

    File[] files=dir.listFiles();

    //遍历路径名数组

   for(File file:files){

       //如果是目录或者文件夹

       if(file.isDirectory()){

//递归啦!继续遍历

  getFile(file,filter,list);

 }else{

     //否则判断是否符合过滤器条件

     if(filter.accept(dir, file.getName()))

        //添加到list表中

 list.add(file);

 }

   }

}

 public static void writeToFile(List<File> list,File destFile) {//传进去两个参数,一个数据源,一个接收结果,程序里边一倒腾

     BufferedWriter bfw=null;

    try {

//开一个写入流

bfw = new BufferedWriter(new FileWriter(destFile));

//遍历集合列表中的每一个文件路径封装成的File对象

for(File file:list){

  //获取绝对路径并写入

   bfw.write(file.getAbsolutePath());

   bfw.newLine();

   bfw.flush();

}

    } catch (IOException e) {

// TODO Auto-generated catch block

throw new RuntimeException("写入失败");

    }

    //保证程序异常时,流也能关闭   

    finally{

  if(bfw!=null)

   try {

bfw.close();

   } catch (IOException e) {

// TODO Auto-generated catch block

throw new RuntimeException("关闭失败");

   }

       }

 }

}