【问题标题】:In Java JDK 1.6 I need to run an executable that takes in redirected input在 Java JDK 1.6 中,我需要运行一个接受重定向输入的可执行文件
【发布时间】:2014-05-23 21:50:48
【问题描述】:

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

exe < input_file

我的代码如下所示:

final ProcessBuilder pb = new ProcessBuilder( "exe", "<", "input_file");

// Set working directory
pb.directory( new File( hps.hdfFilePath ) );

// Execute
p = pb.start( );

这会导致错误:“文件

ProcessBuilder 不喜欢“

【问题讨论】:

  • 您可以使用各种redirectXStream 方法来利用它。
  • @SotiriosDelimanolis 可以,但不能根据问题使用 JDK 1.6。

标签: java executable runtime.exec processbuilder jdk1.6


【解决方案1】:

重定向是由 shell 执行的,所以你需要启动 shell。目前,您正在启动可执行文件并向其传递两个参数,'

【讨论】:

    【解决方案2】:

    在这里查看http://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html 以获取 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();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多