迅雷一道比较基础的笔试面试题目:Java实现统计某一目录下每个文件中出现的字母个数、数字个数、空格个数及行数?
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStreamReader; public class FileCount { public static void ReadSubdirectory(File myDir) { // 判断myDir是否为文件目录 if (myDir.isDirectory()) { File[] subFile = myDir.listFiles(); for (int i = 0; i < subFile.length; i++) { // 如果列表下含有子目录 if (subFile[i].isDirectory()) { ReadSubdirectory(subFile[i]); } else { ReadSubFile(subFile[i]); } } } } // 统计当前文件中数字 字母 空格的个数 和 文件行数 public static void ReadSubFile(File file) { int numCount = 0;// 数字个数 int letterCount = 0;// 字母个数 int spaceCount = 0;// 空格个数 int lineCount = 0;//行数 int uniChar = 0; try { FileInputStream input = new FileInputStream(file); while ((uniChar = input.read()) != -1) { if (uniChar >= 48 && uniChar <= 57) {// 判断是否是数字 numCount++; } else if ((uniChar >= 65 && uniChar <= 90) || (uniChar >= 97 && uniChar <= 122)) {// 判断是否是字母 letterCount++; } else if (uniChar == 32) {// 判断是否是空格 spaceCount++; } } BufferedReader buffer = new BufferedReader(new InputStreamReader(new FileInputStream(file))); while(buffer.readLine() != null) { lineCount++; } System.out.println(file.getAbsolutePath()); System.out.println(" 数字个数 : " + numCount); System.out.println(" 字母个数 : " + letterCount); System.out.println(" 空格个数 : " + spaceCount); System.out.println(" 行数数 : " + lineCount); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { ReadSubdirectory(new File("D://src")); } }