迅雷的一道上机题 主要用了2个java类实现如下: package lianxi; /** * 用于保存每个文件中要记录的数据 * * @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 lianxi; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; 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(); /** * 读取路径 * * @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; // 空格 FileInputStream fis = new FileInputStream(f); BufferedReader br = new BufferedReader( new FileReader(f)); // 统计数字、字母、空格 while ((ch = fis.read()) != -1) { if ('0' <= ch && ch <= '9') { count++; } if ('a' <= ch && ch <= 'z' || 'A' <= ch && ch <= 'Z') { j++; } if (ch == ' ') { k++; } } // 统计行数 while (br.readLine() != null) { i++; } file fi = new file(); fi.setName(f.getName()); fi.setNum(count); fi.setZimu(j); fi.setHang(i); flist.add(fi); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } } /** * 输出 */ public static void Print() { for (file f : flist) { System.out.println(f.getName() + ": ,data:" + f.getNum() + " ,character:" + f.getZimu() + " ,hangshu:" + f.getHang() + " ,kongge:" + f.getKongge()); } } /** * 测试 * * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub GetFile("D://test"); Print(); } }