ฉันจะรับ java.io.InputStream จาก java.lang.String ได้อย่างไร
ฉันมีStringที่ฉันต้องการใช้เป็นInputStreamไฟล์. ใน Java 1.0 คุณสามารถใช้ได้java.io.StringBufferInputStreamแต่นั่นเป็น@Deprecrated(ด้วยเหตุผลที่ดี - คุณไม่สามารถระบุการเข้ารหัสชุดอักขระได้): คลาสนี้แปลงอักขระเป็นไบต์ไม่ถูกต้อง สำหรับ JDK 1.1 วิธีที่ต้องการในการสร้างสตรีมจากสตริงคือผ่านStringReader คลาส คุณสามารถสร้างjava.io.Readerด้วยjava.io.StringReaderแต่ไม่มีอะแดปเตอร์ที่จะใช้Readerและสร้างInputStreamไฟล์. ฉันพบแมงโบราณขอให้มีการเปลี่ยนทดแทนที่เหมาะสม แต่ไม่มีสิ่งนั้นอยู่ - เท่าที่ฉันสามารถบอกได้ วิธีแก้ปัญหาที่แนะนำบ่อย ๆ คือใช้java.lang.String.getBytes()เป็นข้อมูลเข้าjava.io.ByteArrayInputStream: public InputStream createInputStream(String s, String charset) throws java.io.UnsupportedEncodingException { return new ByteArrayInputStream(s.getBytes(charset)); } แต่นั่นหมายถึงการทำให้ข้อมูลทั้งหมดStringในหน่วยความจำกลายเป็นอาร์เรย์ของไบต์และเอาชนะจุดประสงค์ของสตรีม ในกรณีส่วนใหญ่นี่ไม่ใช่เรื่องใหญ่ แต่ฉันกำลังมองหาสิ่งที่จะรักษาจุดประสงค์ของสตรีม - ข้อมูลที่มีเพียงเล็กน้อยที่สุดเท่าที่จะเป็นไปได้คือ (re) ปรากฏในหน่วยความจำ