0

我正在尝试用 Java 覆盖文件。问题是覆盖是在 OpenSSl 进程中完成的。

Runtime rt = Runtime.getRuntime();
         try {
            rt.exec(new String[]{"cmd.exe","/c","openssl enc -aes-256-cbc -nosalt -in \"" + source.getAbsolutePath()+
                    "\" -out \"" + source.getAbsolutePath()+".enc\""  + " -p -pass pass:" + Key});

        } catch (IOException e) {
            e.printStackTrace();
        }

为什么 -out 参数不会被覆盖?当我在 cmd.exe 中执行相同的代码时,它会覆盖它。

4

1 回答 1

0

可能发生错误但未显示。尝试显示以下输出ErrorStream

Process process = rt.exec(...);

BufferedReader error = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String errorLine = null;
while ((errorLine = error.readLine()) != null) {
   System.out.print(errorLine);
}

还要添加这个来验证他们的数组是你认为应该的:

System.out.print(Arrays.toString(new String[]{"cmd.exe","/c","openssl enc -aes-256-cbc -nosalt -in \"" + source.getAbsolutePath()+
                    "\" -out \"" + source.getAbsolutePath()+".enc\""  + " -p -pass pass:" + Key}));
于 2013-05-28T14:38:14.347 回答