如何统计目录下多个文件的代码行数?

How to count the lines of code of multiple files in a directory?

我有 10 Java 个测试用例文件保存在一个目录中。文件夹结构如下所示,

Test Folder
 test1.java
 test2.java
 .
 .
 etc. 

在每个文件中,都有不同的 Java 单元测试用例。

例如,test1.java 看起来像这样,

@Test
public void testAdd1Plus1() 
{
    int x  = 1 ; int y = 1;
    assertEquals(2, myClass.add(x,y));
}

我想计算此 "Test Folder" 目录中每个文件的行数,并将每个文件的行数保存在名为 "testlines"

的单独目录中

例如,"testlines" 目录结构如下所示,

testlines
 test1.java
 test2.java
 .
 .
 etc.

"testlines"目录的test1.java的内容应该是5,因为Test Folder目录下的test1.java有五行代码。

如何编写 Java 程序来达到这个标准?

您需要遍历每个文件,读取计数,在目标目录中创建一个新文件并将该计数添加到其中。

下面是一个工作示例,假设您只扫描一级文件。如果你想要更多的级别,你可以。

此外,路径分隔符取决于您使用的平台 运行 代码。我运行这个就windows所以用\。如果您使用 Linux 或 Mac,请使用 /

import java.io.*;
import java.util.*;

public class Test {

    public static void main(String[] args) throws IOException  {
        createTestCountFiles(new File("C:\Test Folder"), "C:\testlines");
    }

    public static void createTestCountFiles(File dir, String newPath) throws IOException {

        File newDir = new File(newPath);
        if (!newDir.exists()) {
            newDir.mkdir();
        }

        for (File file : dir.listFiles()) {
            int count = lineCount(file.getPath());
            File newFile = new File(newPath+"\"+file.getName());
            if (!newFile.exists()) {
                newFile.createNewFile();
            }
            try (FileWriter fw = new FileWriter(newFile)) {
                fw.write("" + count + "");
            }
        }
    }

    private static int lineCount(String file) throws IOException  {
        int lines = 0;
        try (BufferedReader reader = new BufferedReader(new FileReader(file))){
            while (reader.readLine() != null) lines++;
        }
        return lines;
    }
}