1027-1030JAVA、DEBUG

news/2024/10/31 19:52:44/

在尝试执行 dir 命令时,系统无法找到该命令。这通常是因为 dir 是 Windows 命令提示符(cmd.exe)中的一个内部命令,而不是一个独立的可执行文件。因此,直接通过 Runtime.exec() 方法调用 dir 会失败。
要解决这个问题,可以通过启动 cmd.exe 并传递 /c dir 参数来执行 dir 命令。这样,cmd.exe 会处理 dir 命令并返回结果。

ProcessBuilder 的使用:通过 ProcessBuilder 构建一个进程,指定 cmd.exe 作为命令,并传递 /c 参数和 dir 命令以及目标目录路径。
设置工作目录:使用 processBuilder.directory(new java.io.File(directoryPath)) 设置进程的工作目录,确保 dir 命令在正确的目录下执行。
读取输出:通过 BufferedReader 读取命令的输出并打印到控制台。
处理异常:捕获 IOException 和 InterruptedException 异常,并将它们包装成 RuntimeException 抛出。

设置字符编码:在 InputStreamReader 的构造函数中,传入 "UTF-8" 作为字符编码。这确保了读取的输出使用 UTF-8 编码。
异常处理:将所有可能抛出的异常统一捕获并转换为 RuntimeException 重新抛出,简化了异常处理逻辑。
通过这些修改,应该可以解决输出乱码的问题。如果问题仍然存在,可以尝试使用其他编码(如 GBK)或检查系统默认编码是否正确。
看起来即使设置了字符编码,输出仍然出现乱码。这可能是由于以下几个原因:
系统默认编码问题:Windows 系统的默认编码通常是 GBK 或 GB2312,而不是 UTF-8。
命令行工具的编码设置:PowerShell 或命令提示符的默认编码可能与 Java 程序的编码不匹配。
解决方案
使用 GBK 编码:尝试将字符编码设置为 GBK。
检查命令行工具的编码设置:确保命令行工具的编码设置与 Java 程序一致。

为了确保在 show 方法中如果有其他任务执行时能够等待,可以使用 synchronized 关键字来实现线程同步。这样可以确保在同一时间只有一个线程能够执行 show 方法中的代码。

因为只是给定了压缩后文件生成的所在目录,但是压缩后文件还没有创建,所以会报错,无法创建流

显示压缩成功,但压缩文件中为空

```

 // 分块解密
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            byte[] buffer = new byte[MAX_DECRYPT_BLOCK];
            int bytesRead;
            while ((bytesRead = fis.read(buffer)) != -1) {
                byte[] block = new byte[bytesRead];
                System.arraycopy(buffer, 0, block, 0, bytesRead);
                byte[] decryptedBlock = cipher.doFinal(block);
                out.write(decryptedBlock);
            }


            // 构建输出文件路径
            String outputFilePathWithOriginalName = Paths.get(outputFilePath).resolve(originalFileName).toString();
            try (FileOutputStream fos = new FileOutputStream(outputFilePathWithOriginalName)) {
                fos.write(out.toByteArray());
            }

```

```

        // 分块解密
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        int inputLen = data.length;
        int offSet = 0;
        byte[] cache;
        int i = 0;
        while (inputLen - offSet > 0) {
            if (inputLen - offSet > MAX_DECRYPT_BLOCK) {
                cache = cipher.doFinal(data, offSet, MAX_DECRYPT_BLOCK);
            } else {
                cache = cipher.doFinal(data, offSet, inputLen - offSet);
            }
            out.write(cache, 0, cache.length);
            i++;
            offSet = i * MAX_DECRYPT_BLOCK;
        }

        // 写入目标文件
        Files.write(Paths.get(target), out.toByteArray());
        out.close();

```

SwingUtilities.invokeLater 的调用没有立即执行,而是被放入了事件队列中等待处理。为了确保进度条能够实时更新,我们可以尝试以下几种方法:
减少 Thread.sleep 的时间间隔:使每个进度更新的间隔更短,从而提高更新频率。
使用 SwingWorker:SwingWorker 是专门用于在后台执行任务并更新 Swing UI 的类,可以更好地处理这种场景。


http://www.ppmy.cn/news/1543409.html

相关文章

计算机网络 | 第二章 物理层 | 26王道考研自用笔记

物理层任务:实现相邻节点之间比特(0或1)的传输 2.1 通信基础基本概念 2.1.1 信源、信宿、信号、信道 在通信系统中,信源负责生成信息,信宿接收和解释信息。信号是传输信息的载体,经过信道从信源到达信宿。…

Flink CDC系列之:理解学习Kubernetes模式

Flink CDC系列之:理解学习Kubernetes模式 准备会话模式启动会话集群设置 Flink CDC提交 Flink CDC Job Kubernetes 是一种流行的容器编排系统,用于自动化计算机应用程序的部署、扩展和管理。Flink 的原生 Kubernetes 集成允许您直接在正在运行的 Kuberne…

智能护栏碰撞监测终端:内蒙古高速的安全守护者

​ ​一、引言 ​ ​在内蒙古那辽阔的大地上,高速公路如动脉般纵横交错,是经济发展与人员流动的重要通道。而保障这些公路安全运行的关键因素之一,便是智能护栏碰撞监测终端。它以其卓越的性能,实时为公路安全保驾护航&…

深度了解flink(七) JobManager(1) 组件启动流程分析

前言 JobManager是Flink的核心进程,主要负责Flink集群的启动和初始化,包含多个重要的组件(JboMaster,Dispatcher,WebEndpoint等),本篇文章会基于源码分析JobManagr的启动流程,对其各个组件进行介绍&#x…

C#二分查找算法

前言 二分查找算法是一种在有序数组中查找特定元素的搜索算法。 实现原理 二分查找的实现依赖于以下几个关键步骤: 计算查找范围的中间索引。 比较中间索引处的值与目标值。 根据比较结果调整查找范围(左半部分或右半部分)。 重复上述步…

论文提交步骤 | 2024年第五届MathorCup大数据竞赛

2024年第五届MathorCup数学应用挑战赛—大数据竞赛于2024年10月25日下午6点正式开赛。 论文和承诺书、支撑材料(可选)及计算结果文档由各参赛队队长电脑登录下方报名主页提交: https://www.saikr.com/vse/bigdata2024 初赛作品提交截止时间为…

线性可分支持向量机代码 举例说明 具体的变量数值变化

### 实现线性可分支持向量机 ### 硬间隔最大化策略 class Hard_Margin_SVM:### 线性可分支持向量机拟合方法def fit(self, X, y):# 训练样本数和特征数m, n X.shape# 初始化二次规划相关变量:P/q/G/hself.P matrix(np.identity(n 1, dtypenp.float))self.q matr…

程序员工作七年,我踩过的那七个坑

作者:东东拿铁 引言 今天想聊聊,自己在7年工作中踩过坑的7件事情。 一、不会问问题 一杯茶一包烟,一个bug改一天。 程序员面对技术难题是非常正常的事情,谁还没有碰见问题束手无策的时候呢。 记得刚工作的时候,我…