我试图从我的Java应用程序中解压缩rar文件。
我已经找到了很多关于如何在Windows上执行适用于dir
等内容的命令的解决方案。但它似乎不适用于gcc
或rar
等任何其他应用程序。我知道它们都有效,因为当我在cmd
中执行它们时,它们会给我正确的输出。
但是,我想打印他们在cmd
中吐出的输出。我只是不明白为什么它适用于dir
而不是其他任何东西(没有"原生"命令)。
exitVal
似乎总是为0 ..
try {
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("cmd /c rar.exe"); //Does not work
//Process pr = rt.exec("cmd /c dir") // This works
//Process pr = rt.exec("gcc.exe");
BufferedReader input = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line=null;
while((line=input.readLine()) != null) {
System.out.println(line);
}
int exitVal = pr.waitFor();
System.out.println("Exited with error code "+exitVal);
}catch(IOException e)
{
System.out.println("An error occured. Are you sure the executable is in your Windows PATH?");
}
catch(Exception e) {
System.out.println(e.me);
e.printStackTrace();
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:1)
你可以试试下面的内容吗
Process p = Runtime.getRuntime().exec(new String[]{"c:\\some_path\\UnRAR.exe", "e","c:\\some_another_path\\Archive.rar"});
或者您可以使用以下库
https://github.com/edmund-wagner/junrar
答案 1 :(得分:1)
你不能马上在cmd上运行rar.exe。它会给 ' RAR.EXE'不被识别为内部或外部命令,可操作程序或批处理文件。
您可以在环境变量
中指定路径或添加Rar的路径