当前位置:   article > 正文

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

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

1.获取项目根路径

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

System.getProperty("user.dir")

结果:D:\code\idea\GetInfo

2.java中执行CMD命令

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

3.获取线程

  1. //取消下载按钮
  2. downloadProgres.dispose();
  3. ThreadGroup threadGroup = Thread.currentThread().getThreadGroup();
  4. int i = threadGroup.activeCount();
  5. Thread[] threads = new Thread[i];
  6. threadGroup.enumerate(threads);
  7. System.out.println("线程总个数:" + i);
  8. for (int j = 0; j < i; j++) {
  9. String name = threads[j].getName();
  10. System.out.println("第" + j + "个线程名为:" + name);
  11. if ("DownloadThread".equals(name)) {
  12. if (threads[j].isAlive()) {
  13. threads[j].interrupt();
  14. System.out.println("线程-" + threads[j].getName() + " 已中断");
  15. }
  16. }
  17. }

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"));
    }

}

方式二:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
 
public class MD5Util {
 
    // 加密方法:接收一个字符串明文,返回使用 MD5 加密后的哈希值
    public static String encrypt(String plaintext) throws NoSuchAlgorithmException {
        // 使用 MD5 算法创建 MessageDigest 对象
        MessageDigest md = MessageDigest.getInstance("MD5");
        // 更新 MessageDigest 对象中的字节数据
        md.update(plaintext.getBytes());
        // 对更新后的数据计算哈希值,存储在 byte 数组中
        byte[] digest = md.digest();
        // 将 byte 数组转换为十六进制字符串
        StringBuilder sb = new StringBuilder();
        for (byte b : digest) {
            sb.append(String.format("%02x", b & 0xff));
        }
        // 返回十六进制字符串
        return sb.toString();
    }
 
    // 解密方法:接收一个字符串明文和一个使用 MD5 加密后的哈希值,返回解密结果(true 表示匹配,false 表示不匹配)
    public static boolean decrypt(String plaintext, String encrypted) throws NoSuchAlgorithmException {
        // 调用加密方法计算出明文的哈希值
        String decrypted = encrypt(plaintext);
        // 比较计算得到的哈希值和输入的哈希值是否相同
        return decrypted.equals(encrypted);
    }
}

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执行脚本

Runtime.getRuntime().exec("cmd /c copyFile.bat",null,new File(System.getProperty("user.dir")));

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

9.java中指定字符串编码

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

10.bat脚本中指定编码

chcp 936

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

11.Properties类读写文件

读文件

  1. File file = new File(System.getProperty("user.dir") + "\\my.properties");
  2. InputStream inputStream = null;
  3. if (file.exists()) {
  4. Properties properties = new Properties();
  5. try {
  6. inputStream = new FileInputStream(file);
  7. properties.load(inputStream);
  8. for (String propertyName : properties.stringPropertyNames()) {
  9. Object propertyValue = properties.get(propertyName);
  10. LOGGER.info("属性名:" + propertyName + " 属性值:" + propertyValue);
  11. if ("username".equals(propertyName)) {
  12. textFieldUsername.setText((String) propertyValue);
  13. }
  14. if ("password".equals(propertyName)) {
  15. passwordFieldPassword.setText((String) propertyValue);
  16. }
  17. }
  18. } catch (IOException e) {
  19. throw new RuntimeException(e);
  20. } finally {
  21. try {
  22. inputStream.close();
  23. } catch (IOException e) {
  24. throw new RuntimeException(e);
  25. }
  26. }
  27. }

写文件:

  1. if (checkBox1.isSelected()) {
  2. String username = textFieldUsername.getText();
  3. String password = new String(passwordFieldPassword.getPassword());
  4. File file = new File(System.getProperty("user.dir") + "\\my.properties");
  5. if (!file.exists()) {
  6. try {
  7. boolean newFile = file.createNewFile();
  8. } catch (IOException ex) {
  9. throw new RuntimeException(ex);
  10. }
  11. }
  12. OutputStream outputStream = null;
  13. try {
  14. outputStream = new FileOutputStream(file);
  15. Properties properties = new Properties();
  16. properties.setProperty("username", username);
  17. properties.setProperty("password", password);
  18. properties.store(outputStream, "账号密码");
  19. } catch (IOException ex) {
  20. throw new RuntimeException(ex);
  21. } finally {
  22. try {
  23. outputStream.close();
  24. } catch (IOException ex) {
  25. throw new RuntimeException(ex);
  26. }
  27. }
  28. }

12.自定义加密解密

  1. package com.example;
  2. /**
  3. * @Auther lmy
  4. * @date 2024-06-04 2:27
  5. * @Description This is description of code
  6. */
  7. public class MDUtil {
  8. //加密
  9. public static String encrypt(String plaintext) {
  10. String hexString = "";
  11. char[] charArray = plaintext.toCharArray();
  12. for (int i = 0; i < charArray.length; i++) {
  13. if(i==0){
  14. hexString = hexString + Integer.toHexString(charArray[i]);
  15. continue;
  16. }
  17. hexString = hexString + "-" + Integer.toHexString(charArray[i]);
  18. }
  19. return hexString;
  20. }
  21. public static String decrypt(String hexStrings) {
  22. String chars = "";
  23. for (String s : hexStrings.trim().split("-")) {
  24. char ch = (char) Integer.parseInt(s, 16);
  25. chars = chars + ch;
  26. }
  27. return chars;
  28. }
  29. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/691271
推荐阅读
相关标签
  

闽ICP备14008679号