【工具】从项目中抽取指定行数的代码 用来申请软著等package com.study; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.file.FileAppender; import cn.hutool.core.text.StrBuilder; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import java.io.File; import java.util.List; /** * 软著 */ Slf4j public class 代码整理 { //配置项目路径 必选 /** */ private static final String 项目路径 C:\\workspace\\baidu\\; //配置指定多个目录 可选 private static final ListString 目录s ListUtil.of(, ); //配置需要排除的目录 可选 private static final ListString 排除目录s ListUtil.of(config, util); //配置指定行数 可选 默认 -1全部 private static final int 最大行数 3000; private static int 当前行数 0; //配置输出路径 private static final String 输出路径 C:\\project\\软著\\; private static FileAppender 输出追加 new FileAppender( new File(代码整理.输出路径输出代码_System.currentTimeMillis() .txt), 16, true); public static void main(String[] args) { 代码整理.生成代码(); } /** * * * 输出到配置的目录 代码_时间戳.txt * */ public static void 生成代码() { log.info(生成代码, 设定最大行数为:{}, 任务开始, 代码整理.最大行数); 代码整理.读取项目文件列表(代码整理.项目路径); log.info(生成代码, 实际进度:{}/{}, 任务结束, 代码整理.当前行数, 代码整理.最大行数); } /** * 递归 * param 路径 */ public static void 读取项目文件列表(String 路径) { if(代码整理.是否够数(0)){ 代码整理.输出追加.flush(); //结束 return; } String[] split 路径.split(\\\\); String s1 split[split.length - 1]; boolean contains 代码整理.排除目录s.contains(s1); if(contains){ return; } File[] ls FileUtil.ls(路径); if(ArrayUtil.isEmpty(ls)){ return; } 代码整理.输出追加.flush(); for (File file : ls) { boolean directory file.isDirectory(); if(directory){ String path file.getPath(); 代码整理.读取项目文件列表(path); continue; } ListString 每行数据 FileUtil.readUtf8Lines(file); if(CollUtil.isEmpty(每行数据)){ continue; } for (String s : 每行数据) { if(StrUtil.isBlank(s)){ continue; } if(代码整理.是否够数(1)){ 代码整理.输出追加.flush(); //结束 return; } 代码整理.输出追加.append(s); } } } public static boolean 是否够数(int 添加行数){ if(代码整理.当前行数 代码整理.最大行数){ //结束 return true; } 代码整理.当前行数 添加行数; return false; } }
【工具】从项目中抽取指定行数的代码 用来申请软著等
发布时间:2026/6/6 16:10:48
【工具】从项目中抽取指定行数的代码 用来申请软著等package com.study; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.file.FileAppender; import cn.hutool.core.text.StrBuilder; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import java.io.File; import java.util.List; /** * 软著 */ Slf4j public class 代码整理 { //配置项目路径 必选 /** */ private static final String 项目路径 C:\\workspace\\baidu\\; //配置指定多个目录 可选 private static final ListString 目录s ListUtil.of(, ); //配置需要排除的目录 可选 private static final ListString 排除目录s ListUtil.of(config, util); //配置指定行数 可选 默认 -1全部 private static final int 最大行数 3000; private static int 当前行数 0; //配置输出路径 private static final String 输出路径 C:\\project\\软著\\; private static FileAppender 输出追加 new FileAppender( new File(代码整理.输出路径输出代码_System.currentTimeMillis() .txt), 16, true); public static void main(String[] args) { 代码整理.生成代码(); } /** * * * 输出到配置的目录 代码_时间戳.txt * */ public static void 生成代码() { log.info(生成代码, 设定最大行数为:{}, 任务开始, 代码整理.最大行数); 代码整理.读取项目文件列表(代码整理.项目路径); log.info(生成代码, 实际进度:{}/{}, 任务结束, 代码整理.当前行数, 代码整理.最大行数); } /** * 递归 * param 路径 */ public static void 读取项目文件列表(String 路径) { if(代码整理.是否够数(0)){ 代码整理.输出追加.flush(); //结束 return; } String[] split 路径.split(\\\\); String s1 split[split.length - 1]; boolean contains 代码整理.排除目录s.contains(s1); if(contains){ return; } File[] ls FileUtil.ls(路径); if(ArrayUtil.isEmpty(ls)){ return; } 代码整理.输出追加.flush(); for (File file : ls) { boolean directory file.isDirectory(); if(directory){ String path file.getPath(); 代码整理.读取项目文件列表(path); continue; } ListString 每行数据 FileUtil.readUtf8Lines(file); if(CollUtil.isEmpty(每行数据)){ continue; } for (String s : 每行数据) { if(StrUtil.isBlank(s)){ continue; } if(代码整理.是否够数(1)){ 代码整理.输出追加.flush(); //结束 return; } 代码整理.输出追加.append(s); } } } public static boolean 是否够数(int 添加行数){ if(代码整理.当前行数 代码整理.最大行数){ //结束 return true; } 代码整理.当前行数 添加行数; return false; } }