Java上机实现统计某一目录下每个文件中出现的字母个数、数字个数、空格个数及行数?

来源:互联网 发布:myeclipse mac 破解版 编辑:程序博客网 时间:2024/05/21 06:42

package com.longrise.LEAP.ISIP.BLL;

/**
 * 用于保存每个文件中要记录的数据
 *
 * @author Administrator
 *
 */

public class file {
    public String name;   //文件名
    public int num;      //数字数目
    public int zimu;    //字母数
    public int hang;    //行数
    public int kongge;  //空格数

    public int getKongge() {
        return kongge;
    }

    public void setKongge(int kongge) {
        this.kongge = kongge;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }

    public int getZimu() {
        return zimu;
    }

    public void setZimu(int zimu) {
        this.zimu = zimu;
    }

    public int getHang() {
        return hang;
    }

    public void setHang(int hang) {
        this.hang = hang;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

/*****************************************************************************************/

 

 

 

 

package com.longrise.LEAP.ISIP.BLL;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;

/**
 * Java上机实现统计某一目录下每个文件中出现的字母个数、数字个数、空格个数及行数? 
 *
 * @author Administrator
 *
 */

public class ReadFile {
    /**
     * 保存文件统计信息
     */
    public static List<file> flist = new ArrayList<file>();

    /**
     * 读取路径
     *
     * @param path
     */
    private static void GetFile(String path) {

        File filedir = new File(path);
        ComputeFle(filedir);
    }

    /**
     * 递归遍历文件
     * @param filedir
     */
    private static void ComputeFle(File filedir) {
        if (filedir.isDirectory()) { // 文件目录
            File[] farray = filedir.listFiles();
            for (File f : farray) {
                if (f.isDirectory()) { //是目录
                    ComputeFle(f);
                } else { //是文件
                    try {
                        int ch = 0;
                        int count = 0; //数字
                        int j = 0; //字母
                        int i = 0; // 行数
                        int k = 0; // 空格
                        BufferedReader br = new BufferedReader(new FileReader(f));

                        // 统计数字、字母、空格、行数
      byte[] str = null;
      String line = br.readLine();
      while (line != null) {
       str = line.getBytes();
       for (int m = 0; m < str.length && str != null; m++) {
        ch = str[m];
        if ('0' <= ch && ch <= '9') {
         count++;
        }
        if ('a' <= ch && ch <= 'z' || 'A' <= ch
          && ch <= 'Z') {
         j++;
        }
        if (ch == ' ') {
         k++;
        }
       }
       i++;
       line = br.readLine();
      }
                         
                        file fi = new file();
                        fi.setName(f.getName());
                        fi.setKongge(k);
                        fi.setNum(count);
                        fi.setZimu(j);
                        fi.setHang(i);
                        flist.add(fi);
                        br.close();

                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }

            }

        }
    }

    /**
     * 输出
     */
    public static void Print() {
        for (file f : flist) {
            System.out.println(f.getName() + ": 数字:" + f.getNum()
                    + " ,字母:" + f.getZimu() + " ,行数:" + f.getHang()
                    + " ,空格:" + f.getKongge());
        }
    }

    /**
     * 测试
     *
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        GetFile("D://test");  //文件路径
        Print();
    }

}

 

 

 

原创粉丝点击