[Estadísticas de cuantas líneas de código Java hay en el directorio xx]

oportunidad

En la entrevista de ayer, me preguntaron ¿cuántas líneas de código he escrito? No sé cómo responder por un tiempo, y no tengo un concepto, ¡porque nunca he contado la cantidad de líneas de código!
Después de la entrevista, pensé en contar


lograr

De hecho, no es difícil de implementar. Solo necesitamos sumar .javael número de líneas de todos los archivos que terminan en el directorio especificado. Aquí, el recorrido primero en profundidad se usa para las estadísticas. El código es el siguiente:

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

/**
 * @program: leetCode
 * @description: 求某个目录下的java代码有多少行
 * @author: liangjiayy
 * @create: 2022-09-29 21:40
 **/
public class SumOfCodeLineCount {
    
    
    /**
     * 要统计的文件的后缀名
     */
    private static final String SUFFIX = ".java";

    public static void main(String[] args) {
    
    
        //定义起始目录
        String dir = "C:\\Users\\AikeTech\\IdeaProjects\\";

        System.out.println("你要统计的起始目录是:\"" + dir + "\",确定请输入\"Y\":");
        String input = new Scanner(System.in).nextLine();
        if (!"y".equalsIgnoreCase(input.trim())) {
    
    
            System.out.println("你已取消统计!");
            return;
        }

        //获取该目录下所有java代码的行数
        long lineCount = getLineCount(dir);
        System.out.println("\"" + dir + "\"目录下,后缀为\"" + SUFFIX + "\"的代码共有 " + lineCount + " 行!");
    }

    /**
     * 获取某个目录下,所有后缀名为 SUFFIX(类变量)  的文件的行数
     *
     * @param dir
     * @return
     */
    private static long getLineCount(String dir) {
    
    
        File file = new File(dir);

        if (!file.isDirectory()) {
    
    
            //是个文件,统计有多少行
            if (dir.endsWith(SUFFIX)) {
    
    
                return statisticalLineCount(file);
            }
            return 0;
        }

        //是个目录,递归
        String[] list = file.list();
        if (list == null) {
    
    
            return 0;
        }

        long sum = 0;
        for (String l : list) {
    
    
            //父目录 + 分隔符 + 文件/目录名
            sum += getLineCount(dir + "\\" + l);
        }

        return sum;
    }

    /**
     * 统计某个文件的行树
     *
     * @param file
     * @return
     */
    private static long statisticalLineCount(File file) {
    
    
        try (LineNumberReader lineNumberReader = new LineNumberReader(new FileReader(file))) {
    
    
            long length = file.length();
            lineNumberReader.skip(length);
            return lineNumberReader.getLineNumber();
        } catch (FileNotFoundException fileNotFoundException) {
    
    
            fileNotFoundException.printStackTrace();
        } catch (IOException e) {
    
    
            e.printStackTrace();
        }
        return 0;
    }
}

resultado de la operación:
inserte la descripción de la imagen aquí

usar

¿Cómo usar la clase anterior?

  • Si también desea contar la cantidad de líneas de todos los códigos Java en un directorio determinado, simplemente modifique dir en el código anterior: encontrará la cantidad de líneas de todos los archivos que terminan en .java en este directorio
    inserte la descripción de la imagen aquí

  • Si cuenta el número de líneas en otros archivos, también debe modificar las siguientes variables (nombre de sufijo)
    inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/m0_55155505/article/details/127114972
Recomendado
Clasificación