"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إعادة استخدام دفق الإدخال لقراءات متعددة في جافا؟

كيفية إعادة استخدام دفق الإدخال لقراءات متعددة في جافا؟

تم النشر بتاريخ 2024-11-08
تصفح:337

How to Reuse an Input Stream for Multiple Reads in Java?

إعادة استخدام تدفقات الإدخال

يمكن أن تكون قراءة نفس تدفق الإدخال مرتين مفيدة في سيناريوهات مختلفة. أحد هذه السيناريوهات هو تحميل صورة بعيدة وحفظها محليًا ثم الوصول إلى الصورة المحفوظة. ولتحقيق ذلك، من الأفضل إعادة استخدام نفس دفق الإدخال بدلاً من إنشاء دفق جديد.

إحدى الطرق لإعادة استخدام دفق الإدخال هي نسخ محتوياته إلى مصفوفة بايت. يمكن القيام بذلك باستخدام طريقة org.apache.commons.io.IOUtils.copy. يمكن بعد ذلك استخدام مصفوفة البايت الناتجة لإنشاء كائنات ByteArrayInputStream متعددة، والتي يمكن قراءتها بشكل متكرر.

إليك مثال على كيفية القيام بذلك:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
org.apache.commons.io.IOUtils.copy(in, baos);
byte[] bytes = baos.toByteArray();

// Option 1: Read the byte array multiple times
while (needToReadAgain) {
    ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
    yourReadMethodHere(bais);
}

// Option 2: Reset the input stream to read from it again
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
while (needToReadAgain) {
    bais.reset();
    yourReadMethodHere(bais);
}

يرجى ملاحظة أن هذا الأسلوب قد لا يكون مناسبًا للتدفقات الكبيرة أو اللانهائية، لأنه يتضمن نسخ محتويات التدفق إلى الذاكرة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3