当前位置: 首页 > news >正文

[个人总结]-java常用方法

1.获取项目根路径

user.dir是一个系统属性,表示用户当前的工作目录,大多数情况下,用户的当前工作目录就是java项目的根目录(src文件的同级路径)

System.getProperty("user.dir")

结果:D:\code\idea\GetInfo

2.java中执行CMD命令

//创建目录结构/**目录结构:运行目录\包类型\pr_path\pr_label* */String property = System.getProperty("user.dir"); //当前工作目录,src文件的同级路径String dirString = property + "\\" + (prPath.replace("/", "\\")) + "\\" + prLabel;System.out.println("创建的目录结构: " + dirString);String createPrWorkspaceCommond = "mkdir " + dirString;try {Process process = Runtime.getRuntime().exec("cmd.exe /c " + createPrWorkspaceCommond + " >>p4Download.txt");try {int waitFor = process.waitFor(); //用于阻塞进程 下载完版本后才可进行后续操作} catch (InterruptedException e1) {e1.printStackTrace();}} catch (IOException e1) {e1.printStackTrace();}

3.获取线程

        //取消下载按钮downloadProgres.dispose();ThreadGroup threadGroup = Thread.currentThread().getThreadGroup();int i = threadGroup.activeCount();Thread[] threads = new Thread[i];threadGroup.enumerate(threads);System.out.println("线程总个数:" + i);for (int j = 0; j < i; j++) {String name = threads[j].getName();System.out.println("第" + j + "个线程名为:" + name);if ("DownloadThread".equals(name)) {if (threads[j].isAlive()) {threads[j].interrupt();System.out.println("线程-" + threads[j].getName() + " 已中断");}}}

4.匿名内部类多线程动态更新swing窗口

new Thread(new Runnable() {
    @Override
    public void run() {
        downloadProgress.getProgressBar1().setString("");
    }
}).start();

5.java调用cmd执行命令

try {
    // 调用CMD命令
    String command = "ipconfig";
    Process process = Runtime.getRuntime().exec(command);
    // 获取命令输出结果
    InputStream inputStream = process.getInputStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "GBK")); // 设置编码为GBK
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
    // 等待命令执行完成
    process.waitFor();
} catch (IOException | InterruptedException e) {
    e.printStackTrace();
}

6.java调用cmd执行ipconfig命令

1.基础命令

cmd /c dir 是执行完dir命令后关闭命令窗口。

cmd /k dir 是执行完dir命令后不关闭命令窗口。

cmd /c start dir 会打开一个新窗口后执行dir指令,原窗口会关闭。

cmd /k start dir 会打开一个新窗口后执行dir指令,原窗口不会关闭

2.执行完毕后不关闭cmd页面

private static void cmdExec() {

try {

Runtime.getRuntime().exec("cmd /k start cmd.exe /k ipconfig");

} catch (Exception e) {

log.error(e.getMessage(), e);

}

}

7.MD5加密工具类

package cn.tx.utils;

import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * MD5加密的工具类
 */
public class MD5Utils {

    /**
     * 使用md5的算法进行加密
     */
    public static String encrypt(String content) {
        byte[] secretBytes = null;
        try {
            secretBytes = MessageDigest.getInstance("md5").digest(content.getBytes());
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("没有md5这个算法!");
        }
        String md5code = new BigInteger(1, secretBytes).toString(16);// 16进制数字
        // 如果生成数字未满32位,需要前面补0
        for (int i = 0; i < 32 - md5code.length(); i++) {
            md5code = "0" + md5code;
        }
        return md5code;
    }

    public static void main(String[] args) {
        System.out.println(encrypt("admin"));
    }

}

8.管理权限运行命令

需要管理员权限执行的命令可以通过执行bat脚本

如:拷贝文件到C:\Windows\System32目录下需要管理员权限

获取管理员权限:

1、新建脚本,如copyFile.bat,内容如下

@echo off

chcp 65001
echo 正在复制文件到System32目录...
cd /d %~dp0
%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit
copy /Y "D:\Code\swingTest\123shsghajw.exe" "%windir%\System32\"
echo 复制完成。
pause

注:

  • %windir%    表示windows系统文件的安装目录,即:C:\windows
  • 将以下代码放在要获取管理员权限执行的代码前
  • chcp 65001   更改编码为UTF-8

%1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","::",,"runas",1)(window.close)&exit

2、java中使用exec执行脚本

9.java中指定字符串编码

new String("我喜欢java".getBytes(), StandardCharsets.UTF_8);

10.bat脚本中指定编码

chcp 936

936 代表的是GBK 编码,是专门针对中文的编码

http://www.lryc.cn/news/360283.html

相关文章:

  • 什么是Java泛型?它有什么作用
  • [机缘参悟-197] - 《道家-水木然人间清醒1》读书笔记 -21-看问题从现象到本质的层次
  • AIGC商业案例实操课,发觉其创造和商业的无限可能,Ai技术在行业应用新的商机
  • Java学习路径图
  • 文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《考虑动态定价的新能源汽车能源站优化运行》
  • 【简单讲解下Fine-tuning BERT,什么是Fine-tuning BERT?】
  • Docker搭建Redis主从 + Redis哨兵模式(一主一从俩哨兵)
  • Three.js——tween动画、光线投射拾取、加载.obj/.mtl外部文件、使用相机控制器
  • 内网渗透-在HTTP协议层面绕过WAF
  • qt QGroupBox radiobutton
  • jetson nano onnxruntime 安装
  • 图形学初识--屏幕空间变换
  • 爬楼梯 - LeetCode 热题 81
  • 详解 Spark 核心编程之 RDD 分区器
  • Selenium番外篇文本查找、元素高亮、截图、无头运行
  • Java 22的FFM API,比起Java 21的虚拟线程
  • 用c语言实现简易三子棋
  • 2024年华为OD机试真题-执行时长-Python-OD统一考试(C卷D卷)
  • 对未知程序所创建的 PDF 文档的折叠书签层级全展开导致丢签的一种解决方法
  • 计算机系统结构之FORK和JOIN
  • Yocto - virtual/kernel介绍
  • 如何在 DigitalOcean 云服务器上创建自定义品牌名称服务器
  • 心链6----开发主页以及后端数据插入(多线程并发)定时任务
  • 【Linux】日志管理
  • AI 绘画爆火背后:扩散模型原理及实现
  • 详解智慧互联网医院系统源码:开发医院小程序教学
  • 【技术实操】银河高级服务器操作系统实例分享,数据库日志文件属主不对问题分析
  • 函数的创建和调用
  • 数模混合芯片设计中的修调技术是什么?
  • MySQL 自定义函数(实验报告)