2010-02-08 22 views
16

Sử dụng JNLP, tôi có dòng này:Làm thế nào để thay thế StringBufferInputStream bằng StringReader?

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

Làm thế nào để thay thế StringBufferInputStream với StringReader trong dòng này? API cho StringBufferInputStream cho biết sử dụng StringReader tốt hơn, nhưng làm cách nào để chuyển đổi giữa các loại khác nhau?

Trả lời

28

FileSaveService.saveFileDialog lấy một InputStream, không phải là Reader (vì nó muốn dữ liệu nhị phân, không phải dữ liệu ký tự).

StringBufferInputStream không được chấp nhận vì nó không chuyển đổi ký tự thành byte đúng cách.

Bạn có thể sử dụng thay vì ByteArrayInputStream:

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

Điểm mấu chốt là InputStream cần phải biết làm thế nào để mã hóa byte của bạn. – Matt

+0

Có, bạn cần chọn mã hóa (UTF-8 trong ví dụ trên). – Thilo

1

Thư viện lớp Java chuẩn không có cách nào để quấn Reader làm InputStream, nhưng câu hỏi SO sau và câu trả lời của nó cung cấp một số giải pháp. Hãy cẩn thận để đọc bản in!

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

Tuy nhiên, nó là đơn giản chỉ gắn bó với những gì bạn đã có, (nếu điều này chỉ là đơn vị mã kiểm tra ... vì nó dường như là), hoặc để thay thế StringInputStream với một ByteArrayInputStream như được mô tả bởi câu trả lời của @ Thilo.

Các vấn đề liên quan