Saya memiliki Stringyang 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
StringReaderkelas.
Anda dapat membuat java.io.Readerdengan java.io.StringReader, tetapi tidak ada adaptor untuk mengambil Readerdan 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 Stringmemori 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.