2010-02-08 30 views
16

JNLP kullanarak, bu satırı var:StringBufferInputStream, StringReader ile nasıl değiştirilir?

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

Bu satırda StringBufferInputStream StringReader ile nasıl değiştirilir? StringBufferInputStream için API daha iyi kullanmak StringReader diyor, ama farklı türleri arasında nasıl dönüştürülür?

cevap

28

FileSaveService.saveFileDialog bir Reader değil, bir InputStream alır (çünkü ikili veri istiyor, karakter verilerini değil). Düzgün bayt içine karakterleri dönüştürmez nedeniyle

StringBufferInputStream kullanımdan kaldırıldı.

yerine ByteArrayInputStream kullanabilirsiniz:

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

kilit noktası inputStream sizin bayt kodlamak için nasıl bilmelidir olduğunu. – Matt

+0

Evet, bir kodlama seçmeniz gerekiyor (yukarıdaki örnekte UTF-8). – Thilo

1

Standart Java sınıf kitaplıkları, Reader'u InputStream olarak sarmanın hiçbir yolunu sunmaz, ancak aşağıdaki SO sorusu ve yanıtları bazı çözümler sunar. İnce baskının okunmasına dikkat edin!

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

Ancak, (bu sadece birim test kodu ise göründüğü kadar ...) sadece şu havlular şeye tutunmaya veya ByteArrayInputStream olarak sahip StringInputStream yerine daha basittir @ Thilo'nun cevabı tarafından tarif edilmiştir.

İlgili konular