遍历指定jar包中class文件名并输出到文件中
import java.io.*;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;/*** 功能:遍历指定jar包中class文件名并输出到文件中* 第一个参数输入:jar包或者需要搜索class的目录* 第二个参数输入:搜索信息输出文件*/
public class FindClassToFile {private static final List<String> list = new ArrayList<>();private static String FILE_NAME;public static void main(String[] args) throws IOException {if (args.length == 2) {String findPath = args[0];FILE_NAME = args[1];System.out.println(">>>搜索目录或者文件:" + findPath);System.out.println(">>>搜索信息输出文件:" + FILE_NAME);if (canCreateFile(FILE_NAME)) {findJarFromPath(findPath);write(FILE_NAME);} else {System.out.println(">>>请输入正确的输出文件路径");}} else {System.out.println("java -jar xxx.jar directory|jar infoFile");System.out.println("if you run java file in ide,you need add 'directory|jar infoFile' to Program arguments");}}/*** 创建输出文件** @param filePath* @return*/private static boolean canCreateFile(String filePath) {try {File file = new File(filePath);if (!file.exists()) {return file.createNewFile();} else if (!file.isFile()) {return false;} else {return true;}} catch (IOException e) {return false;}}/*** 将信息写到文件中** @param fileName*/private static void write(String fileName) {try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName, true)))) {for (String s : list) {bw.write(s);bw.write("\n");}bw.flush();list.clear();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}/*** 遍历扫描目录或者文件(.jar后缀)* @param path* @throws IOException*/private static void findJarFromPath(String path) throws IOException {File file = new File(path);if (!file.exists()) {return;}if (file.getName().endsWith(".jar")) {readFileFromJar(file.getCanonicalPath());if (list.size() > 10000) {write(FILE_NAME);}}if (file.isDirectory()) {File[] files = file.listFiles();for (File f : files) {String ph = f.getCanonicalPath();System.out.println(ph);findJarFromPath(ph);}}}private static void readFileFromJar(String jarPath) throws IOException {list.add("------------------------------");list.add(jarPath);JarFile jarFile = new JarFile(jarPath);Enumeration<JarEntry> enumeration = jarFile.entries();String name;while (enumeration.hasMoreElements()) {JarEntry entry = enumeration.nextElement();name = entry.getName();if (getFalse(name)) {list.add(name);}}list.add("------------------------------");}private static boolean getFalse(String name) {int a = name.lastIndexOf(".");int b = name.lastIndexOf("/");if (a < b) {return false;}return true;}
}
遍历指定jar包中class文件名并输出到文件中相关推荐
- 将指定目录下的sql文件名写入到txt文件中
2019独角兽企业重金招聘Python工程师标准>>> 前段时间需要把文件夹中所有sql文件整到一个文档中,进行MySQL数据库的批量导入用,所以写了下面的小程序. import j ...
- JavaWeb编程中如果jar包存在但显示无法输出,就在IDEA的项目发布中添加lib依赖!
JavaWeb编程中如果jar包存在但显示无法输出,就在IDEA的项目发布中添加lib依赖! 第一步:点击设置选择项目结构 第二步:选择工件artifact,选子模块,然后再WEB-INF目录下添加l ...
- 利用 exe4j 将 JAR 包制成免安装 JDK 的 EXE 文件
利用 exe4j 将 JAR 包制成免安装 JDK 的 EXE 文件 exe4j 的工作原理 EXE 制作教程 将 JAR 包制成能在 Windows 上直接运行的 EXE 文件,是很多 Java ...
- 批量替换一个文件中的文件名,例如将文件夹中s**_abnormal.jpg文件修改为s**_abnor.jpg
文章涉及到StringAbout::开头的函数具体实现参考:string与Cstring字符串类型转换和其他操作总结 CProcessFile::开头的函数实现参考:文件读写操作工具类CProcess ...
- 根据文件后缀名移动文件 及 按照txt文件中的文件名移动需要的文件到新文件夹
按照txt文件中的文件名移动需要的文件到新文件夹 import os import shutil ''' 程序目的:按照 目标文件名.txt 文件,从源文件夹 path1 中把 目标文件 挪到目标文件 ...
- POI:从Excel文件中读取数据,向Excel文件中写入数据,将Excel表格中的数据插入数据库,将数据库中的数据添加到Excel表
POI 简介: POI是Apache软件基金会用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能. ...
- 将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文件 中
package again;import java.io.*;/* 1.编写一个程序,将 a.txt 文件中的单词与 b.txt 文件中的单词交替合并到 c.txt 文件 中,a.txt 文件中的单词 ...
- CodeSmith实用技巧(八):生成的代码输出到文件中
在CodeSmith中,要把生成的代码文件输出到文件中,你需要在自己的模版中继承OutputFileCodeTemplate类.<?xml:namespace prefix = o ns = & ...
- idea中ctrl+shift+f(在文件中查找)失效,全图文解决方案
idea中ctrl+shift+f(在文件中查找)失效,全图文解决方案 一.Win11微软键盘 原因:因为输入法默认指定ctrl+shift+f是简体与繁体中文输入之间的切换,所以在idea中按键无效 ...
最新文章
- 2016计算机二级java_2016计算机二级JAVA练习题及答案
- NB-IoT与LoRa,两马领跑物联网竞赛,谁将最终胜出?
- java--迭代(一)Iterator和Iterable接口
- udhcp server端源码分析1--文件组织结构
- 二、WPF datagrid 特定行变色
- ansible自动化管理
- linux7补丁安全,CentOS自动打重要安全补丁
- 课时53.video标签(掌握)
- 简易中控紫猫插件版(3)压缩包使用说明
- Source Insight使用技巧
- enum和enum class
- 数组的合并和升序排列_每日“力扣”系列10 下一个排列
- QQ 新增“语音进度条”;滴滴顺风车负责人道歉;华为研发费将超 1000 亿美元 | 极客头条...
- MySQL-第八篇MySQL内置函数
- 1047 : 对数表
- Win10 安装IE11失败错误代码0x80070490(未解决)
- 用计算机名共享打印机不能打印,共享打印机无法打印怎么办解决教程
- 测试大纲法与 场景法
- 2018 年 8 月面试路:6 天 21 家公司
- android平板投屏,安卓手机投屏到平板