كيفية تحويل InputStream إلى مصفوفة byte[] في Java؟ جميع الطرق
مرحباً بالجميع! أنا مبتدئ في Java وواجهت مشكلة: أحتاج إلى قراءة جميع البيانات من InputStream (مثلاً من ملف أو من استجابة HTTP) والحصول عليها كمصفوفة byte[]. لكنني لا أعرف كيفية القيام بذلك بشكل صحيح.
إليك ما جربته:
InputStream input = new FileInputStream("data.bin");
byte[] data = ??? // كيف أحصل على مصفوفة البايت؟
المشكلة أن InputStream لا يسمح لي بمعرفة حجم البيانات مسبقاً. طريقة available() لا ترجع الحجم الكامل، بل فقط ما هو متاح للقراءة دون حظر. حاولت القراءة في حلقة، لكن الكود أصبح غير مرتب وغالباً ما يتعطل.
قرأت عن ByteArrayOutputStream، لكنني لا أفهم كيفية استخدامه بشكل صحيح. كما سمعت عن readAllBytes() في Java 9، لكن مشروعي يعمل على Java 8. أرجو منكم إرشادي إلى طريقة عالمية وموثوقة تعمل في جميع إصدارات Java.
المهم: أحتاج إلى الحصول على مصفوفة بايت، وليس سلسلة نصية.