คำถามติดแท็ก inputstream

กลไกนามธรรมสำหรับการอ่านสตรีมข้อมูลใน Java

7
ไบต์ [] ถึง InputStream หรือ OutputStream
ฉันมีคอลัมน์หยดในตารางฐานข้อมูลของฉันซึ่งฉันต้องใช้byte[]ในโปรแกรม Java ของฉันเป็นการทำแผนที่และการใช้ข้อมูลนี้ฉันต้องแปลงเป็นหรือInputStream OutputStreamแต่ฉันไม่รู้ว่าเกิดอะไรขึ้นภายในเมื่อฉันทำเช่นนั้น ทุกคนสามารถอธิบายสั้น ๆ ว่าเกิดอะไรขึ้นเมื่อฉันทำ Conversion นี้

10
อ่านสตรีมสองครั้ง
คุณอ่านอินพุตสตรีมเดียวกันสองครั้งได้อย่างไร สามารถคัดลอกได้หรือไม่? ฉันต้องการรับภาพจากเว็บบันทึกในเครื่องแล้วส่งคืนรูปภาพที่บันทึกไว้ ฉันคิดว่ามันจะเร็วกว่าถ้าใช้สตรีมเดียวกันแทนที่จะเริ่มสตรีมใหม่ไปยังเนื้อหาที่ดาวน์โหลดแล้วอ่านอีกครั้ง
127 java  inputstream 

6
ฉันจะอ่านไฟล์ข้อความใน Android ได้อย่างไร
ฉันต้องการอ่านข้อความจากไฟล์ข้อความ ในโค้ดด้านล่างจะมีข้อยกเว้นเกิดขึ้น (ซึ่งหมายความว่าจะไปที่catchบล็อก) ฉันใส่ไฟล์ข้อความในโฟลเดอร์ของแอปพลิเคชัน ฉันควรวางไฟล์ข้อความนี้ไว้ที่ไหน (mani.txt) เพื่อให้อ่านได้อย่างถูกต้อง try { InputStream instream = openFileInput("E:\\test\\src\\com\\test\\mani.txt"); if (instream != null) { InputStreamReader inputreader = new InputStreamReader(instream); BufferedReader buffreader = new BufferedReader(inputreader); String line,line1 = ""; try { while ((line = buffreader.readLine()) != null) line1+=line; }catch (Exception e) { e.printStackTrace(); } } } catch …

6
InputStream จาก URL
ฉันจะรับ InputStream จาก URL ได้อย่างไร ตัวอย่างเช่นฉันต้องการรับไฟล์ที่ url wwww.somewebsite.com/a.txtและอ่านเป็น InputStream ใน Java ผ่าน servlet ฉันพยายามแล้ว InputStream is = new FileInputStream("wwww.somewebsite.com/a.txt"); แต่สิ่งที่ฉันได้รับคือข้อผิดพลาด: java.io.FileNotFoundException
117 java  url  inputstream 

3
วิธีการแปลง InputStream เป็น String ใน Scala
ฉันมีฟังก์ชันที่มีประโยชน์ซึ่งฉันเคยใช้ใน Java สำหรับการแปลง InputStream เป็น String นี่คือคำแปลโดยตรงสำหรับ Scala: def inputStreamToString(is: InputStream) = { val rd: BufferedReader = new BufferedReader(new InputStreamReader(is, "UTF-8")) val builder = new StringBuilder() try { var line = rd.readLine while (line != null) { builder.append(line + "\n") line = rd.readLine } } finally { rd.close } builder.toString …

7
FileNotFoundException ขณะรับวัตถุ InputStream จาก HttpURLConnection
ฉันพยายามส่งคำขอโพสต์ไปยัง url โดยใช้ HttpURLConnection (สำหรับการใช้ cUrl ใน java) เนื้อหาของคำร้องขอคือ xml และที่จุดสิ้นสุดแอ็พพลิเคชันจะประมวลผล xml และจัดเก็บเร็กคอร์ดไปยังฐานข้อมูลจากนั้นส่งการตอบกลับในรูปแบบสตริง xml แอปนี้โฮสต์บน apache-tomcat ในเครื่อง เมื่อฉันรันโค้ดนี้จากเทอร์มินัลแถวจะถูกเพิ่มไปยังฐานข้อมูลตามที่คาดไว้ แต่มีข้อยกเว้นเกิดขึ้นดังต่อไปนี้ในขณะที่รับ InputStream จากการเชื่อมต่อ java.io.FileNotFoundException: http://localhost:8080/myapp/service/generate at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1401) at org.kodeplay.helloworld.HttpCurl.main(HttpCurl.java:30) นี่คือรหัส public class HttpCurl { public static void main(String [] args) { HttpURLConnection con; try { con = (HttpURLConnection) new URL("http://localhost:8080/myapp/service/generate").openConnection(); con.setRequestMethod("POST"); con.setDoOutput(true); …

9
เทียบเท่าฝรั่งสำหรับ IOUtils.toString (InputStream)
Apache Commons IOมีวิธีการอำนวยความสะดวกที่ดีIOUtils.toString ()ในการอ่านInputStreamสตริง เนื่องจากฉันพยายามย้ายออกจาก Apache Commons และไปที่Guava : มี Guava เทียบเท่าหรือไม่? ฉันดูคลาสทั้งหมดในcom.google.common.ioแพ็กเกจแล้วก็ไม่พบอะไรง่ายๆเลย แก้ไข:ฉันเข้าใจและขอบคุณปัญหาเกี่ยวกับชุดอักขระ มันเกิดขึ้นมากจนฉันรู้ว่าแหล่งที่มาทั้งหมดของฉันอยู่ใน ASCII (ใช่ ASCII ไม่ใช่ ANSI เป็นต้น) ดังนั้นในกรณีนี้การเข้ารหัสไม่ใช่ปัญหาสำหรับฉัน
106 java  io  inputstream  guava 

3
ใน Kotlin ฉันจะอ่านเนื้อหาทั้งหมดของ InputStream เป็น String ได้อย่างไร
ฉันเพิ่งเห็นรหัสสำหรับอ่านเนื้อหาทั้งหมดของInputStreamสตริงใน Kotlin เช่น: // input is of type InputStream val baos = ByteArrayOutputStream() input.use { it.copyTo(baos) } val inputAsString = baos.toString() และนอกจากนี้ยังมี: val reader = BufferedReader(InputStreamReader(input)) try { val results = StringBuilder() while (true) { val line = reader.readLine() if (line == null) break results.append(line) } val inputAsString = results.toString() …

3
กำลังอ่าน InputStream เป็น UTF-8
ฉันพยายามอ่านจากtext/plainไฟล์ทางอินเทอร์เน็ตทีละบรรทัด รหัสที่ฉันมีตอนนี้คือ: URL url = new URL("http://kuehldesign.net/test.txt"); BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); LinkedList<String> lines = new LinkedList(); String readLine; while ((readLine = in.readLine()) != null) { lines.add(readLine); } for (String line : lines) { out.println("> " + line); } ไฟล์test.txtมี¡Hélló!ซึ่งฉันใช้เพื่อทดสอบการเข้ารหัส เมื่อผมตรวจสอบOutputStream( out) > ¬°H√©ll√≥!ผมเห็นว่ามันเป็น ฉันไม่เชื่อว่านี่เป็นปัญหาOutputStreamเนื่องจากฉันสามารถทำได้out.println("é");โดยไม่มีปัญหา มีแนวคิดในการอ่านแบบInputStreamUTF-8 หรือไม่? ขอบคุณ!

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


5
วิธีที่มีประสิทธิภาพที่สุดในการสร้าง InputStream จาก OutputStream
หน้านี้: http://blog.ostermiller.org/convert-java-outputstream-inputstream อธิบายวิธีการสร้าง InputStream จาก OutputStream: new ByteArrayInputStream(out.toByteArray()) ทางเลือกอื่นคือการใช้ PipedStreams และเธรดใหม่ซึ่งยุ่งยาก ฉันไม่ชอบแนวคิดในการคัดลอกเมกะไบต์จำนวนมากไปยังหน่วยความจำใหม่ในอาร์เรย์ไบต์หน่วยความจำ มีห้องสมุดที่มีประสิทธิภาพมากกว่านี้หรือไม่? แก้ไข: ตามคำแนะนำจาก Laurence Gonsalves ฉันลองใช้ PipedStreams และปรากฎว่าพวกเขาไม่ยากที่จะจัดการ นี่คือโค้ดตัวอย่างใน clojure: (defn #^PipedInputStream create-pdf-stream [pdf-info] (let [in-stream (new PipedInputStream) out-stream (PipedOutputStream. in-stream)] (.start (Thread. #(;Here you write into out-stream))) in-stream))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.