2010-02-08 12 views
16

Korzystanie JNLP, mam ten wiersz:Jak zamienić StringBufferInputStream na StringReader?

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

Jak wymienić StringBufferInputStream z StringReader w tym wierszu? API dla StringBufferInputStream mówi lepiej używać StringReader, ale jak przekonwertować między różnymi typami?

Odpowiedz

28

FileSaveService.saveFileDialog pobiera InputStream, a nie Reader (ponieważ chce danych binarnych, a nie danych znakowych).

StringBufferInputStream jest przestarzałe, ponieważ nie konwertuje poprawnie znaków na bajty.

Można użyć ByteArrayInputStream zamiast:

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

Kluczowym punktem jest InputStream musi umieć zakodować bajtów. – Matt

+0

Tak, musisz wybrać kodowanie (UTF-8 w powyższym przykładzie). – Thilo

1

Standardowe biblioteki klasy Java nie oferują żadnego sposobu na zawijanie Reader jako InputStream, ale następujące pytanie SO i jego odpowiedzi oferują kilka rozwiązań. Uważaj, aby przeczytać drobnym drukiem!

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

jednak łatwiej jest po prostu trzymać się z tym, co masz, (jeśli jest to tylko jednostka kodu testu ... jak się wydaje) lub zastąpić StringInputStream z ByteArrayInputStream jako opisany przez odpowiedź @ Thilo.