【问题标题】:Java Help: Character Encoding Help - int to StringJava 帮助:字符编码帮助 - int 到 String
【发布时间】:2011-09-05 02:12:35
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    你试过了吗

    outputField.setText(""+b);
    

    outputField.setText(Integer.valueOf(b).toString());
    

    【讨论】:

    • 或者干脆outputField.setText(Integer.toString(b))
    【解决方案2】:

    将 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,可能是一种更好的方法,除非你在读入时有“实时提要”的感觉。

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 2013-03-08
      • 1970-01-01
      • 2014-10-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      相关资源
      最近更新 更多