إعادة استخدام تدفقات الإدخال
يمكن أن تكون قراءة نفس تدفق الإدخال مرتين مفيدة في سيناريوهات مختلفة. أحد هذه السيناريوهات هو تحميل صورة بعيدة وحفظها محليًا ثم الوصول إلى الصورة المحفوظة. ولتحقيق ذلك، من الأفضل إعادة استخدام نفس دفق الإدخال بدلاً من إنشاء دفق جديد.
إحدى الطرق لإعادة استخدام دفق الإدخال هي نسخ محتوياته إلى مصفوفة بايت. يمكن القيام بذلك باستخدام طريقة 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