我試圖在兩個Java程序之間管道文本。爲了簡便起見,我提出這樣的代碼:命令外殼上的java進程之間的管道不可靠的工作
import java.io.DataInputStream;
import java.io.IOException;
public class Test {
public static void main(String[] args) throws IOException {
DataInputStream stdin = new DataInputStream(System.in);
String completeText = "";
while (stdin.available() > 0) {
byte[] tempByte = { stdin.readByte() };
completeText += new String(tempByte);
}
System.out.println(completeText);
}
}
當執行在Linux或Windows下,文本似乎得到省略,因爲如果管道被封堵或失去了相當隨機的。有時候一切都會通過,有時不會:
echo "omg wtf" | java Test | java Test
對此的任何想法?看起來,文本越容易經歷cpu越慢。當輸入從java System.out.println()管道輸出時,是否「可用」返回錯誤的結果?
乾杯!