文章目录

  • 前言
  • 一、代码结构
  • 二、开源仓库地址
  • 总结

前言

一个Jar包管理的小工具,目前有如下几个作用,后面可以慢慢扩展

1.搜索当前项目路径下的所有jar并复制到某一路径下

2.执行某个目录下的jar包批量运行启动

3.Kill所有java进程

一、代码结构

这些功能后面可以自行慢慢扩展,我目前只做到了我需要的那部分,首先看看文件处理

JarManagerApplication

package com.ljm;import com.ljm.play.One;
import com.ljm.play.Two;
import java.io.IOException;
import java.util.Scanner;/*** 一个JAR管理小脚本* 1.搜索当前项目路径下的所有jar并复制到某一路径下* 2.执行某个目录下的jar包批量运行启动* 3.kill所有java进程* @author 李家民*/
public class JarManagerApplication {public static void main(String[] args) {menu();String InputStr = null;// 创建一个扫描器对象 用于接收键盘数据Scanner scannerShow = new Scanner(System.in);while (!scannerShow.hasNext() == true) {// 等待用户输入}InputStr = scannerShow.next();System.out.println("您输入的功能项是:" + InputStr);switch (InputStr) {case "1":// 1.搜索当前项目路径下的所有jar并复制到某一路径下One.selectMethod();One.copyMethod();break;case "2":// 2.执行某个目录下的jar包批量运行启动Two.runJar();break;case "3":// 3.kill所有java进程break;default:System.out.println("===参数错误===");break;}// 程序退出System.exit(0);}/*** 一个JAR管理小脚本* 1.搜索当前项目路径下的所有jar并复制到某一路径下* 2.执行某个目录下的jar包批量运行启动* 3.kill所有java进程*/public static void menu() {System.out.println("一个JAR管理小脚本-----");System.out.println("请输入功能项(数字):");System.out.println("1.搜索当前项目路径下的所有jar并复制到某一路径下");System.out.println("2.执行某个目录下的jar包批量运行启动");System.out.println("3.kill所有java进程");System.out.println();}
}

One

package com.ljm.play;import com.ljm.handle.FileHandler;
import java.io.IOException;
import java.util.List;
import java.util.Scanner;public class One {/*** 查询搜索*/public static void selectMethod() {// E:\44_JAVA_Protect\杭州地铁\hangzhou-metro-server-newString pathInputStr = "";// 创建一个扫描器对象 用于接收键盘数据Scanner scanner = new Scanner(System.in);System.out.println("请输入项目路径:");// 判断用户有没有输入字符串if (scanner.hasNext() == true) {pathInputStr = scanner.next();System.out.println("您输入的路径是:" + pathInputStr);}// 搜索FileHandler.getBladeJar(pathInputStr);}/*** 复制到某个路径*/public static void copyMethod() {// 目录位置String pathInputStr = "";// 创建一个扫描器对象 用于接收键盘数据Scanner scanner = new Scanner(System.in);System.out.println("请输入要复制的路径:");// 判断用户有没有输入字符串if (scanner.hasNext() == true) {pathInputStr = scanner.next();System.out.println("您输入的路径是:" + pathInputStr);}List<String> bladeJarPathList = FileHandler.getBladeJarPathList();List<String> bladeJarNameList = FileHandler.getBladeJarNameList();System.out.println("开始复制.......");for (int i = 0; i < bladeJarPathList.size(); i++) {String sPath = bladeJarPathList.get(i);String sName = pathInputStr + "\\" + bladeJarNameList.get(i);try {FileHandler.copy(sPath, sName);System.out.println("已复制文件:" + (i + 1) + "   总数量:" + bladeJarPathList.size());} catch (IOException e) {throw new RuntimeException(e);}}}}

FileHandler

package com.ljm.handle;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;/*** 文件处理器* @author 李家民*/
public class FileHandler {private static List<String> jarPathList = new ArrayList<>();private static List<String> jarNameList = new ArrayList<>();/** JAR包路径 */public static List<String> getBladeJarPathList() {return jarPathList;}/** JAR包名称 */public static List<String> getBladeJarNameList() {return jarNameList;}/*** 查找所有BLADE-JAR后缀的文件* @param path*/public static void getBladeJar(String path) {File file = new File(path);if (file.exists()) {File[] files = file.listFiles();if (null != files) {for (File file2 : files) {if (file2.isDirectory()) {getBladeJar(file2.getAbsolutePath());} else {String file2AbsolutePath = file2.getAbsolutePath();int length = file2AbsolutePath.length();int lastIndexOf = file2AbsolutePath.lastIndexOf(".");if (lastIndexOf <= 0) {continue;}if (file2AbsolutePath.substring(lastIndexOf, length).equals(".jar")) {if (!file2AbsolutePath.contains("common") && !file2AbsolutePath.contains("api") && !file2AbsolutePath.contains("lib")) {jarPathList.add(file2AbsolutePath);jarNameList.add(file2.getName());}}}}}}}/*** 从srcPathName复制文件内容到destPathName文件中* @param srcPathName  输入文件* @param destPathName 输出文件* @throws IOException*/public static void copy(String srcPathName, String destPathName) throws IOException {// 创建IO流// FileInputStream和FileOutputStreamFileInputStream fis = new FileInputStream(srcPathName);FileOutputStream fos = new FileOutputStream(destPathName);// 从fis流中读取数据,写到fos流中byte[] data = new byte[10];int len;while ((len = fis.read(data)) != -1) {fos.write(data, 0, len);}// 关闭fis.close();fos.close();}
}

上面通篇代码总结下来就几个功能点

  1. 搜索某个路径下的某个后缀的文件
  2. 复制文件
  3. IO流

然后看看批量执行脚本启动的代码

package com.ljm.play;import com.ljm.handle.FileHandler;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;public class Two {/*** 跑起来所有Jar*/public static void runJar() {String pathInputStr = "";// 创建一个扫描器对象 用于接收键盘数据Scanner scanner = new Scanner(System.in);System.out.println("请输入JAR路径:");// 判断用户有没有输入字符串if (scanner.hasNext() == true) {pathInputStr = scanner.next();System.out.println("您输入的路径是:" + pathInputStr);}// 搜索FileHandler.getBladeJar(pathInputStr);List<String> jarPathList = FileHandler.getBladeJarPathList();// cmdtry {FileWriter fileWriter = new FileWriter(pathInputStr + "\\" + "start.bat");fileWriter.append("@echo off \n");fileWriter.append("\n");for (String strP : jarPathList) {fileWriter.append("start java -d64 -server -Xms512m -Xmx2048m -jar " + strP + "\n");fileWriter.append("choice /t 10 /d y /n > null " + "\n");fileWriter.append("\n");}fileWriter.flush();fileWriter.close();Process p = Runtime.getRuntime().exec("cmd /c " + pathInputStr + "\\" + "start.bat");} catch (Exception e) {throw new RuntimeException(e);}}
}

真香,缺点就是路径要全英文,这个还没解决,晚点。

二、开源仓库地址

地址
JAR管理小脚本: 一个JAR管理小脚本 (gitee.com)

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容。

Jar批量管理小工具相关推荐

  1. 软件加入使用时间_Mac实用菜单栏管理小工具 Bartender 3 | Mac软件天堂

    小伙伴们,感谢关注「Mac软件天堂」,遇到"XX已损坏"."XX意外退出"."无法确认开发者"等问题记得点击菜单栏的「帮助」解决哦 !同时, ...

  2. 微信小程序|使用小程序制作一个时间管理小工具

    适时而学,适时而息,张弛有度的生活态度才能让我们走得更远.此文使用小程序制作一个日程管理小工具,将时间进行分解以实现有效管理. 开发步骤 一.创建小程序 二.功能实现 2.1.首页 2.2.记录页 3 ...

  3. 防火墙策略管理小工具——网络安全

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.防火墙配置文件 1. 地址集合 2. 服务集合 3. 规则集合 二.防火墙策略管理小工具的开发 1. 主要功能 2 ...

  4. Nodejs批量处理图片小工具:批量修改图片信息

    git:GitHub - xiaoli0510/ImgToolNode: Nodejs批量处理图片小工具 小工具一:批量修改文件夹里面的图片名称 步骤: 1.安装nodejs. 2.根据需要修改edi ...

  5. 一个简单的图片管理小工具

    e图片管理是一个用go语言开发,图片管理小工具,支持按文件名搜索,点击图片名称显示图片. 在图片上所展示出内容之外有添加按钮和删除按钮,删除按钮带有二次确认.不需要联网. 文件下载链接 演示视频 ![ ...

  6. 简书个人文章备份,图片批量导出小工具

      此小工具弥补简书的 "打包下载文章" 功能上的不足,它能批量的将简书发布的个人文章上用到的所有图片批量爬取并导出到你的个人电脑,支持 Windows 和 Mac.   导出的文 ...

  7. 【远程桌面管理小工具】

    平时项目多 当然需要使用的后台服务器也会多 记性不好 会去翻文档查找账号 密码 甚至有的IP也会忘记 该小工具解决了您的烦恼   一键管理服务器 不再忘记 ------------------> ...

  8. 【python】openstack管理小工具(增删查改,批量ping)

    工具介绍: 创建虚拟机会使用多线程队列的方式去控制同时创建的虚拟机数量 如果在创建的虚拟机比较多,会2次创建.第一次会在各个宿主机上创建一台,其余的会再第一次创建成功后创建. 因为第一次创建需要传输镜 ...

  9. Css图片批量下载小工具--saveimg1.5

    备用下载地址:http://download.csdn.net/detail/zhoumengkang/4949519 1.5只是将代码进行有一些自以为是的优化,实际说应该是表面上的代码量减少了,但不 ...

最新文章

  1. WinObjC?这是什么鬼?
  2. [私]-optee的同步方法
  3. Golang 在阿里集团调度集群管理系统 Sigma 中的实践
  4. 【XAudio2】7.如何加载音频数据文件
  5. 限界分支法:01背包问题,优先级队列(包含解的追踪)
  6. 数据库性能瓶颈的出现
  7. 使用MailMessage.AlternateViews时遇到的小问题
  8. 深度学习-服务端训练+android客户端物体识别实战(caffe入门教程+mobilenet+ncnn+android)
  9. halcon学习之阈值分割(threshold、binary_threshold、dyn_threshold、var_threshold、auto_threshold、fast_threshold、)
  10. windows开启远程桌面
  11. 批量导出二维码并生成压缩文件
  12. Ken Thompson的话
  13. 高薪程序员面试题精讲系列23之说一下如何实现文件上传、下载以及断点续传?
  14. 什么品牌的台灯适合学生用?适合学生党用的台灯推荐
  15. jQuery—弹窗广告
  16. MySQL远程连接报错:ERROR 2002 (HY000): Can‘t connect to server on ‘192.168.172.130‘ (115)
  17. WPF 3D开发教程(四)
  18. LaTeX 中少量俄文的输入
  19. From RankNet to LambdaRank to LambdaMART: An Overview
  20. You-Get, Annie 视频下载器 一键安装脚本

热门文章

  1. QQ聊天灌水机简要分析
  2. ARP欺骗之——ARP攻击防范
  3. win10-Ubuntu双系统启动项设置
  4. 积木开发系列----Workspace的一些设定细节
  5. 电压电流等效,功率不等效;对外等效,对内不等效的理解
  6. SVS为某市检察院打造全新无纸化会议厅
  7. 正则表达式判断字符串是否全是数字、小数点、正负号组成等
  8. 查成绩啦!2021年上半年软考可以查成绩了
  9. Google 月球 X 大奖结束,无人获奖;微软宣布全新开发者工具项目 Windows Desktop...
  10. canvas--微信红包效果