2010-02-08 4 views
16

Mit JNLP, habe ich diese Zeile:Wie StringBufferInputStream mit StringReader ersetzen?

File_Save_Service.saveFileDialog(null,null,new StringBufferInputStream("testing"),null); 

Wie StringBufferInputStream mit String in dieser Linie ersetzen? Die API für StringBufferInputStream sagt besser StringReader, aber wie konvertiert man zwischen verschiedenen Typen?

Antwort

28

FileSaveService.saveFileDialog verwendet einen InputStream, keinen Reader (weil es Binärdaten und keine Zeichendaten haben soll).

StringBufferInputStream ist veraltet, da Zeichen nicht korrekt in Bytes konvertiert werden.

können Sie ByteArrayInputStream verwenden statt:

new ByteArrayInputStream("the string".getBytes("UTF-8")) 
+1

Der entscheidende Punkt ist die Input muss wissen, wie Ihre Bytes zu kodieren. – Matt

+0

Ja, Sie müssen eine Codierung auswählen (UTF-8 im obigen Beispiel). – Thilo

1

Die Standard-Java-Klassenbibliotheken bieten keine Möglichkeit, Reader als InputStream zu umhüllen, aber die folgende SO-Frage und ihre Antworten bieten einige Lösungen. Achten Sie darauf, das Kleingedruckte zu lesen!

How to convert a Reader to InputStream and a Writer to OutputStream?

Allerdings ist es einfacher, nur mit dem, was Sie haben, (wenn diese nur Unit-Test-Code ist ... wie es zu sein scheint), oder die StringInputStream mit einem ByteArrayInputStream zu ersetzen beschrieben von @ Thilos Antwort.