在JavaJDK1.6中,我需要运行一个接收重定向输入的可执行文件
在Java JDK 1.6中,我需要运行一个接收重定向输入的可执行文件,如下所示:在JavaJDK1.6中,我需要运行一个接收重定向输入的可执行文件,java,executable,runtime.exec,processbuilder,jdk1.6,Java,Executable,Runtime.exec,Processbuilder,Jdk1.6,在Java JDK 1.6中,我需要运行一个接收重定向输入的可执行文件,如下所示: exe < input_file exe
exe < input_file
exe
我的代码如下所示:
final ProcessBuilder pb = new ProcessBuilder( "exe", "<", "input_file");
// Set working directory
pb.directory( new File( hps.hdfFilePath ) );
// Execute
p = pb.start( );
final ProcessBuilder pb=new ProcessBuilder(“exe”,"重定向是由shell执行的,因此您需要启动shell。当前,您正在启动可执行文件并向其传递两个参数,重定向是由shell执行的,因此您需要启动shell。当前,您正在启动可执行文件并向其传递两个参数,请查看p的文档处理器生成器
需要注意的是,构造函数的第一个参数之后的所有内容都被解释为命令行参数
ProcessBuilder pb = new ProcessBuilder("exe");
Process p = pb.start();
OutputStream pos = p.getOutputStream();
InputStream input = new FileInputStream(new File("input_file"));
byte[] buffer = new byte[1024];
int read = 0;
while((read = input.read(buffer)) != -1) {
pos.write(buffer, 0, read);
}
input.close();
请在此处查看ProcessBuilder的文档
需要注意的是,构造函数的第一个参数之后的所有内容都被解释为命令行参数
ProcessBuilder pb = new ProcessBuilder("exe");
Process p = pb.start();
OutputStream pos = p.getOutputStream();
InputStream input = new FileInputStream(new File("input_file"));
byte[] buffer = new byte[1024];
int read = 0;
while((read = input.read(buffer)) != -1) {
pos.write(buffer, 0, read);
}
input.close();
您可以使用各种redirectXStream
方法来利用此功能。@SotiriosDelimanolis您可以,但根据问题,JDK 1.6不能。您可以使用各种redirectXStream
方法来利用此功能。@SotiriosDelimanolis您可以,但根据问题,JDK 1.6不能。