将 OutputStream 指向某种 GUI 中似乎是文本字段的内容似乎很奇怪。你确定那是你真正想要的吗?如果您想捕获正在写入 Writer 的内容,则StringWriter通常是合适的。您只需让写入发生,然后对其调用toString()以获得最终结果。如果您真的在寻找一种在将内容写入 Writer/OutputStream 时将内容写入文本字段的方法,请查看以下内容:
public static void main(String[] args) throws Exception {
JFrame frame = new JFrame("I be streamin!");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField field = new JTextField();
frame.add(field);
frame.pack();
frame.setVisible(true);
System.out.println("Enter stuff to write to the field");
char c;
InputStreamReader in = new InputStreamReader(System.in, "UTF-8");
while ((c = (char) in.read()) != -1) {
String currentText = field.getText();
field.setText(currentText + c);
Thread.sleep(250);
}
}
注意 1:使用正确的编码代替 UTF-8。
注意 2:虽然我使用 Thread.sleep() 减慢了速度,但一次将一个字符写入一个字段本身就有点浪费,因为您不断地创建和丢弃字符串。做一些少量的缓冲,比如我前面提到的使用 StringWriter,可能是一种更好的方法,除非你在读入时有“实时提要”的感觉。