1

我想使用java.io.OutputStream的write(int)方法,並且我無法弄清楚如何將int正確地轉換回字符串。Java Help:字符編碼幫助 - int到字符串

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

你有沒有試過這種

outputField.setText(""+b); 

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

或者只是'outputField.setText (Integer.toString(b)中)'。 –

0

這似乎很奇怪,被指揮的OutputStream到什麼似乎是某種形式的GUI的文本字段。你確定這就是你真正想要的嗎?如果您想要捕獲正在寫入Writer的內容,則StringWriter通常是合適的。你只要讓文字發生,然後打電話toString()就可以得到最終結果。如果你真的正在尋找一種方式來寫的東西,因爲它是寫一個作家的文本字段/ 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一樣,可能會更好一些,除非你是在閱讀「活動饋送」之後感覺有東西出現。