如何统计目录下多个文件的代码行数?
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;
}
}
我有 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;
}
}