首页 > 代码库 > 用字符流实现每个文件夹中创建包含所有文件信息的readme.txt

用字符流实现每个文件夹中创建包含所有文件信息的readme.txt

  1 package com.readme;  2   3 import java.io.BufferedWriter;  4 import java.io.File;  5 import java.io.FileWriter;  6 import java.io.IOException;  7 import java.text.SimpleDateFormat;  8 import java.util.Date;  9 import java.util.Scanner; 10  11 /** 12  * @author lisj 13  * 用字符流实现每个文件夹中创建包含所有文件信息的readme.txt 14  * 15  */ 16 public class FileNews { 17  18     static int i=0;    //定义文件个数全局变量 19     public static void main(String args[]) throws IOException{ 20          21         find();  //调用查找文件函数         22         System.out.println("共有"+i+"个文件! "); 23          24     } 25  26      27     /** 28      * find()函数实现目录参数的传递 29      * 在此方法中调用写文件信息函数 30      */ 31     private static void find() throws IOException { 32          33         Scanner scanner=new Scanner(System.in); 34         System.out.println("请输入目录(输入end退出程序):");         35         String findpath=scanner.next();        //输入路径 36          37          38         File file=new File(findpath); 39          40         if(!file.exists()||!file.isDirectory()){    //判断该路径是否存在,是否是目录 41              42             if(findpath.equals("end"))            //结束判断条件 43             { 44                 System.out.println("程序结束,感谢使用!"); 45                 System.exit(-1); 46             } 47             else        //输入错误,重新输入 48             { 49                 System.out.println("输入的路径不存在,请重新输入!(输入end退出程序)"); 50                 find();        //递归调用 51             } 52                          53         } 54          55         lookup(file);    //调用判断文件,写文件信息函数 56          57     } 58      59      60      61     /** 62      * lookup()函数实现目标目录下文件和文件夹的判别 63      * 在此方法中实现写入文件信息到readme.txt 64      */ 65     public static void lookup(File file) throws IOException{ 66          67         String read=file.getAbsolutePath(); 68         File readfileexist=new File(read+"/"+"readme.txt");  69         if(readfileexist.exists()){    //如果已经存在readme.txt,则删除 70             readfileexist.delete(); 71         } 72          73         File[] names=file.listFiles();    //输入的路径下的文件的目录 74              75         BufferedWriter out=null;    //定义字符输出流 76          77         //查找到的文件属性数组的初始化 78         if(names!=null){ 79          80         for(File name:names){        //遍历输入的路径下的文件和文件夹 81              82             if(name.isFile())        //判断该路径下是文件 83             {         84                  85                     //定义文件时间属性                     86                     Date date=new Date(name.lastModified()); 87                     SimpleDateFormat simpledate=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 88                      89                     String laststr  = name.getParent(); 90                     File readfile=new File(laststr+"/"+"readme.txt"); //定义字符流写入的路径和文件名 91                  92                     out = new BufferedWriter(new FileWriter(readfile,true));  //定义字符流可追加写入信息                 93                                  94                                 out.write("名字:"+name.getName()+"   ");         //写入文件信息 95                                 out.newLine(); 96                                 out.write("大小:"+name.length()+"  字节"); 97                                 out.newLine(); 98                                 out.write("时间:"+simpledate.format(date)+"  ");     99                                 out.newLine();100                                 out.newLine();101                                 out.flush();        //刷新缓冲以及关闭流102                                 out.close();103                                 i++;            //统计文件个数104                         105                 }106                 else107                 {108                     lookup(name);//递归调用函数109                 }110             }111         112         }113 114     }115         116 }