我有一段代码通过使用以下命令调用 bash 终端的实例——
proc = Runtime.getRuntime().exec("/bin/bash", null, working-dir);
然后在这个被调用的 bash 实例上运行 unix 命令,我正在使用这样的 PrintWriter 对象——
PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())), true);
然后,我使用 PrintWriter 对象以下列方式实际执行命令——
out.println("pwd");
out.println("ls >a.txt");
虽然这两个命令似乎都可以正常工作,但在我根据一些用户输入构建命令的情况下,我遇到了一个问题。具体来说,我正在构建一个命令来将一些文件发送到网络上的打印机,我正在这样做——
while ((strLine = br.readLine()) != null) {
cmd= blah +blah +blah;//Construction of the command
out.println(cmd);
}
上面这段代码中实际发生的是 br 正在从包含所有需要打印的文件的文件中读取,然后具有文件名的字符串进入命令,我将其写入 PrintWriter 对象。
我面临的问题是,我猜想发生某种排队,并且 PrintWriter 对象实际上并没有在每次构造命令时将命令传递给调用的 bash 实例。所以在一天结束时,如果正在构建 40 个命令,那么只有大约 16-18 个文档正在打印。我猜是因为它一次性将所有命令发送到打印机导致损失。我想消除这种损失。
任何指针??
谢谢 p1nG