Java แปลงไฟล์เป็นอาร์เรย์ไบต์
คำสำคัญ: ไฟล์, สตรีมไฟล์, สตรีมไบต์, อาร์เรย์ไบต์, ไบนารี
บทคัดย่อ: ข้อกำหนดล่าสุดที่พบในการทำงานคือการใช้ HTTP เพื่อส่งข้อมูลไบนารีไปยังอินเทอร์เฟซที่สอดคล้องกันของเซิร์ฟเวอร์และชุดข้อมูลไบนารีแบบผสมเช่น UserID และไฟล์ (เข้ารหัส) บทความนี้มีวัตถุประสงค์เพื่อบันทึกความรู้และสรุปการแปลงไฟล์เป็นอาร์เรย์ไบต์โดยใช้ Java
FileInputStream
อ่านไฟล์ด้วย FileInputStream
FileInputStream เป็นคลาสย่อยของ InputStream ซึ่งใช้ในการอ่านข้อมูลจากไฟล์ ตัวสร้างจะได้รับประเภทไฟล์หรือประเภทสตริงที่แสดงเส้นทางไฟล์
ไฟล์ไฟล์ = ไฟล์ใหม่ ("filePath"); FileInputStream FIS = ใหม่ FileInputStream (ไฟล์); ByteArrayOutputStream
ใช้ ByTeArrayOutputStream เพื่ออ่านข้อมูลไฟล์ใน FileInputStream
ByteArrayOutputStream ใช้เพื่อสร้างบัฟเฟอร์ในหน่วยความจำและข้อมูลทั้งหมดที่ส่งไปยัง "สตรีม" จะต้องอยู่ในบัฟเฟอร์นี้
ByTeArrayOutputStream BOS = New ByteArrayOutputStream (FIS); byte [] b = byte ใหม่ [1024]; int len = -1; ในขณะที่ ((len = fis.read (b))! = -1) {bos.writeหมายเหตุ: วิธีการเขียนของ ByteArrayOutputStream มีสามรูปแบบเกินพิกัด:
เขียน (int b)
เขียนไบต์ที่ระบุ
เขียน (ไบต์ [] b)
เขียนถึงอาร์เรย์ไบต์ทั้งหมด B
เขียน (byte [] b, int ปิด, int len)
เขียนไปยังอาร์เรย์ไบต์ B เริ่มต้นจากตัวห้อยของ B และเขียน Len Bytes
อันที่สองไม่ได้ใช้ที่นี่ แต่มีการใช้อันที่สาม ในรหัสจำนวนการอ่านลงในบัฟเฟอร์ B โดยทั่วไปคือ 1024 (เนื่องจากความยาวที่ระบุจะปรากฏขึ้นเมื่อมีการกำหนด B) เฉพาะเมื่อมีการอ่านจุดสิ้นสุดมันอาจจะไม่เพียงพอ 1024 ไบต์และจำนวนไบต์การอ่านที่แท้จริงจะถูกอ่าน อย่างไรก็ตามเมื่อเขียนถึงบัฟเฟอร์หากไม่ได้ระบุจำนวนการเขียนนั่นคือ LEN ไม่ได้ระบุไว้แล้ว B ทั้งหมดจะถูกเขียน แม้ว่าจะมีเพียงส่วนหนึ่งของเนื้อหาใน B แต่จะยังคงเขียน 1024 ไบต์ สิ่งนี้จะทำให้ อาร์เรย์ไบต์ที่เกิดขึ้นไม่ใช่ความยาวจริงเมื่อใช้ TobyTearray!
สิ่งนี้เขียนสตรีมไฟล์จากอินพุตสตรีมลงใน ByteArrayOutputStream
ใช้วิธี TobyTearray () ของ ByteArrayOutputStream เพื่อรับอาร์เรย์ไบต์ของไฟล์
ไบต์ [] filebyte = bos.tobytearray ();
ขอบคุณสำหรับการอ่านฉันหวังว่ามันจะช่วยคุณได้ ขอบคุณสำหรับการสนับสนุนเว็บไซต์นี้!