我正在尝试使用java.io.OutputStream的write(int)方法,我无法弄清楚如何将int正确地转换回String。
public PrintWriter out = new PrintWriter(new OutputStream() {
@Override
public void write(int b) throws IOException {
outputField.setText(/* I need a byte[] or char[] or string from this int */);
}
});
我真的需要这方面的帮助。我试图使用一个方法从一个int创建一个byte [],但它使文本搞砸了很多空格。
答案 0 :(得分:0)
你试过这个吗?
outputField.setText(""+b);
或
outputField.setText(Integer.valueOf(b).toString());
答案 1 :(得分:0)
将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,可能是一种更好的方法,除非你在“实时反馈”之后感觉有东西出现在它上面。