思路是把所有的符合要求的文件存入一个集合、然后遍历集合,获取每个文件的行数。
获取文件采用递归方式、有下一级则递归,没有下一级就存入集合。
下面先贴源码:
package com.util;
/*
* @author gbs
* @date 2020/12/6 0006 10:12
*
* qq: 627638173
*/
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class CalculateRows {
private static List<File> list = new ArrayList();
//存所有文件对象的动态数组
/*
允许多个多个文件路径作为参数
*/
public static int calculateRows ( String []pathsname )
{
int count = 0 ;
for( String path : pathsname )
{
count += calculateRows( path ) ;
}
return count ;
}
public static int calculateRows ( String pathname )
{
// 使用绝对路径获取文件流对象
File file = new File( pathname );
// 调用递归方法
getFile(file);
// 创建计数变量
int count = 0;
// 遍历List集合
for (File f : list) {
// 获取文件对象的绝对路径
String strFile = f.getAbsolutePath();
// 判断字符串是否包含我们需要的后缀、如果是则统计行数
if (strFile.contains(".java")||strFile.contains(".xml")||strFile.contains(".html")
||strFile.contains(".yml")||strFile.contains(".pom")) {
try {
// 使用Scanner类读文件,处理异常,参数是根据绝对路径创建文件输入流对象
Scanner s = new Scanner(new FileInputStream(strFile));
// 获取文件中的代码行数,如果有下一行则为true
while (s.hasNextLine()) {
// 判断是否是空行,不为空时计数器+1
if (!"".equals(s.nextLine())) {
count++;
}
}
} catch (FileNotFoundException e) {
}
}
}
return count ;
//返回计数结果
}
// 获取文件夹中的文件
public static void getFile(File file) {
// 判断文件对象是否是文件夹
//如果文件夹不是元数据文件夹
if (file.isDirectory()) {
// 获取文件夹中的所有子文件存入数组
File[] files = file.listFiles();
// 如果文件数组不为空则遍历数组
if (files != null) {
for (File ele : files) {
// 递归,直到分解到所有的文件对象都是文件为止
getFile(ele);
}
}
}
// 将分解到最后的文件对象存入List集合
list.add(file);
}
}
接下来是打JAR包:
另一种打JAR包的方式:
pom添加依赖
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>