迅雷一道比较基础的笔试面试题目: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"));
}
}