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