【发布时间】:2018-01-13 13:16:43
【问题描述】:
我正在尝试读写 bash/cmd。我正在使用流程构建器开始流程。 第一次对命令行进行读写操作非常完美。但是当我在命令行中写了一些东西时,我无法从 InputStream 中读取,直到我关闭了我的缓冲写入器。当我关闭缓冲写入器时,我可以再次从命令行读取。 当我这样做时, outputStream 和 inputStream 之间是否存在冲突:
Thread thread = new Thread() {
public void run()
{
try
{
ProcessBuilder processBuilder = new ProcessBuilder("bash", "-c", "jdb" + path);
processBuilder.redirectErrorStream(true);
Process process = processBuilder.start();
BufferedReader bufferedReaderInput = new BufferedReader(new InputStreamReader(process.getInputStream()));
BufferedReader bufferedReaderError = new BufferedReader(new InputStreamReader(process.getErrorStream()));
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
String currentLine = "";
while ((currentLine = bufferedReaderInput.readLine()) != null)
{
bufferedWriter.write("hello");
bufferedWriter.flush();
//If I close the bufferedWriter here, I can read again from the bufferedReader.
}
while ((currentLine = bufferedReaderError.readLine()) != null)
{
consoleWindow.appendText(currentLine);
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
};
thread.start();
【问题讨论】:
-
了解您在 bash 中运行的确切命令可能会有所帮助。
-
这部分代码在您的程序中的预期目的是什么?是运行用户输入的命令吗?请解释一下。
-
抱歉,我更新了我的问题。我正在尝试使用 jdb 和路径启动 java 控制台调试器。
标签: java bufferedreader bufferedwriter