Java Help:字符编码帮助 - int到String

时间:2011-09-05 02:12:35

标签: java character-encoding abstract-class outputstream printwriter

我正在尝试使用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 [],但它使文本搞砸了很多空格。

2 个答案:

答案 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,可能是一种更好的方法,除非你在“实时反馈”之后感觉有东西出现在它上面。