Лучшим способом является использование библиотеки Java для этих действий. Я не могу написать точный код прямо сейчас, но это не очень сложно. Посмотрите на java.security.KeyPairGenerator и так далее. И это будет хороший опыт в понимании криптографии.
Но если вам нужно только вызвать эту три командной строки, вызов Process.waitFor() - это ответ. Вы можете использовать этот класс.
package ru.donz.util.javatools;
import java.io.*;
/**
* Created by IntelliJ IDEA.
* User: Donz
* Date: 25.05.2010
* Time: 21:57:52
* Start process, read all its streams and write them to pointed streams.
*/
public class ConsoleProcessExecutor
{
/**
* Start process, redirect its streams to pointed streams and return only after finishing of this process
*
* @param args process arguments including executable file
* @param runtime just Runtime object for process
* @param workDir working dir
* @param out stream for redirecting System.out of process
* @param err stream for redirecting System.err of process
* @throws IOException
* @throws InterruptedException
*/
public static void execute(String[] args, Runtime runtime, File workDir, OutputStream out, OutputStream err)
throws IOException, InterruptedException
{
Process process = runtime.exec(args, null, workDir);
new Thread(new StreamReader(process.getInputStream(), out)).start();
new Thread(new StreamReader(process.getErrorStream(), err)).start();
int rc = process.waitFor();
if(rc != 0)
{
StringBuilder argSB = new StringBuilder();
for(String arg : args)
{
argSB.append(arg).append(' ');
}
throw new RuntimeException("Process execution failed. Return code: " + rc + "\ncommand: " + argSB);
}
}
}
class StreamReader implements Runnable
{
private final InputStream in;
private final OutputStream out;
public StreamReader(InputStream in, OutputStream out)
{
this.in = in;
this.out = out;
}
@Override
public void run()
{
int c;
try
{
while((c = in.read()) != -1)
{
out.write(c);
}
out.flush();
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
Вы просто ищете способ выполнения этих трех операторов в Java-коде? Есть ли причина, по которой вы хотите их использовать в коде, в отличие от сценария партии или оболочки? – Sean
Мне нужно вызвать эти команды в java-коде, потому что я буду использовать эти файлы позже в коде. На самом деле основная проблема заключается в том, что третья команда использует тот же файл со второй командой, потому что вторая команда не завершает третью команду. Некоторые спящие решают проблему, но это рискованно –