用java语言统计一个文件夹中所有java文件的个数,统计所有子文件夹中java文件中,以及这些java文件中除去空行和只有空格的行数
时间: 2023-08-17 19:05:10 浏览: 51
以下是一个示例代码,可以实现统计一个文件夹中所有 java 文件的个数,以及统计所有子文件夹中 java 文件中除去空行和只有空格的行数:
```java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class JavaFileStats {
private static int javaFileCount = 0; // 统计 java 文件个数
private static int totalLines = 0; // 统计所有 java 文件的总行数
private static int validLines = 0; // 统计所有 java 文件中除去空行和只有空格的行数
public static void main(String[] args) {
File dir = new File("D:\\example"); // 指定要统计的文件夹
JavaFileStats.countJavaFiles(dir);
System.out.println("Java file count: " + javaFileCount);
System.out.println("Total lines: " + totalLines);
System.out.println("Valid lines: " + validLines);
}
private static void countJavaFiles(File dir) {
File[] files = dir.listFiles();
for (File file : files) {
if (file.isFile() && file.getName().endsWith(".java")) {
// 如果是 java 文件,统计文件个数,并计算文件的行数和有效行数
javaFileCount++;
countFileLines(file);
} else if (file.isDirectory()) {
// 如果是目录,递归遍历子文件夹
countJavaFiles(file);
}
}
}
private static void countFileLines(File file) {
int lines = 0;
int valid = 0;
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String line;
while ((line = reader.readLine()) != null) {
lines++;
if (!line.trim().isEmpty()) {
valid++;
}
}
} catch (IOException e) {
e.printStackTrace();
}
totalLines += lines;
validLines += valid;
}
}
```
在上面的示例中,我们使用递归的方式遍历指定文件夹下的所有文件和子文件夹。对于每个 java 文件,我们使用 `BufferedReader` 读取文件内容,并统计文件的总行数和有效行数。其中,有效行数指除去空行和只有空格的行数。
最后,我们输出统计结果,包括 java 文件个数、所有 java 文件的总行数、所有 java 文件中有效行数。