java统计目录下文件的行数_统计文件行数

import java.io.File;

import java.io.FileReader;

import java.io.IOException;

import java.io.LineNumberReader;

public class FileLineCounter {

private String mFolderPath;

private int mLineCount, fileCount;

private static final String DIVIDER = "**********************************************";

public FileLineCounter(String mFolderPath) {

this.mFolderPath = mFolderPath;

}

public void run() {

System.out.println("开始文件检索:");

traverseFolder(mFolderPath);

System.out.println("一共有" + fileCount + "个文件," + mLineCount + "行代码");

}

private void traverseFolder(String path) {

File file = new File(path);

if (file.exists()) {

File[] files = file.listFiles();

if (null == files || files.length == 0) {

System.out.println("文件夹是空的!");

} else {

for (File file2 : files) {

if (file2.isDirectory()) {

traverseFolder(file2.getAbsolutePath());

} else {

System.out.println(DIVIDER);

fileCount++;

System.out.println("* 第" + fileCount + "个文件");

System.out.println("* 文件名:" + file2.getAbsolutePath());

countLine(file2);

}

}

}

} else {

System.out.println("文件/文件夹不存在!");

}

}

private void countLine(File file) {

try {

if (file.exists()) {

FileReader fr = new FileReader(file);

LineNumberReader lnr = new LineNumberReader(fr);

int linenumber = 0;

while (lnr.readLine() != null) {

linenumber++;

}

System.out.println("* 单个文件行数 " + linenumber);

System.out.println(DIVIDER);

System.out.println();

mLineCount = mLineCount + linenumber;

lnr.close();

} else {

System.out.println("文件不存在!");

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

用法:如果要统计“D:\javaProject\javaTest\src\Main.java”这样单文件的行数

public class Main {

public static void main(String[] args) {

FileLineCounter counter = new FileLineCounter("D:\\javaProject\\javaTest\\src\\Main.java");

counter.run();

}

}

2.如果要统计某一文件夹下的所有文件(D:\javaProject\javaTest\src文件夹下有很多文件)

public class Main {

public static void main(String[] args) {

FileLineCounter counter = new FileLineCounter("D:\\javaProject\\javaTest\\src");

counter.run();

}

}

3.如果文件夹下有多层文件夹/文件混搭(D:\javaProject文件夹下有很多文件/文件夹)

public class Main {

public static void main(String[] args) {

FileLineCounter counter = new FileLineCounter("D:\\javaProject");

counter.run();

}

}

看看输出结果吧

**********************************************

* 第681个文件

* 文件名:D:\androidProject\yxg-master-kotlin\app\src\main\java\com\yxg\worker\widget\viewpagerindicator\TitlePageIndicator.java

* 单个文件行数 872

**********************************************

**********************************************

* 第682个文件

* 文件名:D:\androidProject\yxg-master-kotlin\app\src\main\java\com\yxg\worker\widget\viewpagerindicator\UnderlinePageIndicator.java

* 单个文件行数 406

**********************************************

**********************************************

* 第683个文件

* 文件名:D:\androidProject\yxg-master-kotlin\app\src\main\java\com\yxg\worker\widget\XEditText.java

* 单个文件行数 546

**********************************************

**********************************************

* 第684个文件

* 文件名:D:\androidProject\yxg-master-kotlin\app\src\main\java\com\yxg\worker\YXGApp.kt

* 单个文件行数 468

**********************************************

一共有684个文件,162662行代码

Process finished with exit code 0

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值