Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaJDK1.6中,我需要运行一个接收重定向输入的可执行文件_Java_Executable_Runtime.exec_Processbuilder_Jdk1.6 - Fatal编程技术网

在JavaJDK1.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

在Java JDK 1.6中,我需要运行一个接收重定向输入的可执行文件,如下所示:

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不能。