0

我想从 java 程序运行 shell 脚本。这个 shell 脚本调用一个需要一个大文件作为资源的系统库。

我的 java 程序为文档中的每个单词调用此脚本。如果我使用 Runtime.exec() 一次又一次地调用此脚本,则所花费的时间非常长,因为资源加载需要大量时间。

为了克服这个问题,我想编写如下的 shell 脚本(使其在后台连续运行):


count=0

while count -lt 10 ; do

  read WORD

  //execute command on this line

done

我需要在我的 java 程序中检索命令的输出并进一步处理它。我应该如何编写 I/O 操作来完成这个任务?

我尝试将单词写入进程的输出流并从进程的输入流中读回输出。但这不起作用并引发损坏的管道异常。


try {

    parseResult = Runtime.getRuntime().exec(parseCommand);

    parsingResultsReader = new BufferedReader(new InputStreamReader (parseResult.getInputStream()));

    errorReader = new BufferedReader(new InputStreamReader (parseResult.getErrorStream()));

    parseResultsWriter = new BufferedWriter(new OutputStreamWriter((parseResult.getOutputStream())));

} catch (IOException e) {

            e.printStackTrace();

}

parseResultsWriter.write(word);

parseResultsWriter.flush();

while ((line = parsingResultsReader.readLine()) != null) {

     // capture output in list here

}

请帮助解决这个问题

4

1 回答 1

0
//execute command on this line

这个命令是一个单独的程序吗?然后它将为每个单词启动,因此您将只摆脱轻量级的 shell 进程。您必须学习如何一次对多个单词运行重量级命令。

于 2012-06-28T12:34:59.777 回答