【发布时间】:2021-04-22 18:22:45
【问题描述】:
我尝试从存档中提取文件
我使用命令rar x file_to_extact.rar /tmp/some_dir
所以当我在命令行中执行它时,它会显示文字RAR 5.50 Copyright (c) 1993-2017 Alexander Roshal...
好的
但是当我在 java Process 中执行它时
Process process = new ProcessBuilder(new String[] { "rar", "x", "file_to_extact.rar", "/tmp/some_dir" }).start();
BufferedReader inputReader = new BufferedReader(new
InputStreamReader(process.getInputStream()));
BufferedReader errorReader = new BufferedReader(new
InputStreamReader(process.getErrorStream()));
String string = null;
while ((string = inputReader.readLine()) != null) {
System.out.println(string);
}
while ((string = errorReader.readLine()) != null) {
System.out.println(string);
}
它返回相同的单词但没有Enter password...
我知道,我可以通过命令 -p 检查存档中存在的密码,如 here 所述
但我不明白为什么命令行执行和java进程执行有一些差异
谁能解释一下:
- 为什么会这样?
- 如何正确执行命令,以获取完整信息(示例,欢迎提供链接)?
【问题讨论】:
-
如果您询问代码,请提供您用于获取输出的代码
-
@eis 好的,我编辑了我的问题并添加了一些代码
-
如果你按字符而不是按行阅读会怎样?
-
@BestowsInConstructoring 根据您的代码更新了我的答案
标签: java shell cmd command-line