ฉันมี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) ปรากฏในหน่วยความจำ