Saya memiliki String
yang ingin saya gunakan sebagai file InputStream
. Di Java 1.0, Anda dapat menggunakan java.io.StringBufferInputStream
, tetapi itu sudah @Deprecrated
(dengan alasan yang bagus - Anda tidak dapat menentukan penyandian kumpulan karakter):
Kelas ini tidak mengubah karakter menjadi byte dengan benar. Mulai JDK 1.1, cara yang disukai untuk membuat aliran dari string adalah melalui
StringReader
kelas.
Anda dapat membuat java.io.Reader
dengan java.io.StringReader
, tetapi tidak ada adaptor untuk mengambil Reader
dan membuat file InputStream
.
Saya menemukan bug kuno yang meminta pengganti yang sesuai, tetapi tidak ada yang seperti itu - sejauh yang saya tahu.
Solusi yang sering disarankan adalah dengan menggunakan java.lang.String.getBytes()
masukan untuk java.io.ByteArrayInputStream
:
public InputStream createInputStream(String s, String charset)
throws java.io.UnsupportedEncodingException {
return new ByteArrayInputStream(s.getBytes(charset));
}
tapi itu berarti mewujudkan seluruh String
memori sebagai array byte, dan mengalahkan tujuan streaming. Dalam kebanyakan kasus, ini bukan masalah besar, tetapi saya sedang mencari sesuatu yang akan mempertahankan maksud dari sebuah aliran - bahwa sesedikit mungkin data terwujud (kembali) dalam memori.