InputStream.transferTo()
انسخ InputStream إلى OutputStream في استدعاء واحد.
مقارنة الكود
✕ Java 8
byte[] buf = new byte[8192];
int n;
while ((n = input.read(buf)) != -1) {
output.write(buf, 0, n);
}
✓ Java 9+
input.transferTo(output);
هل ترى مشكلة في هذا الكود؟ أخبرنا.
لماذا يتفوق الأسلوب الحديث
سطر واحد
استبدل حلقة قراءة/كتابة كاملة باستدعاء دالة واحد.
مُحسَّن
حجم المخزن المؤقت الداخلي مضبوط للأداء.
لا أخطاء
لا أخطاء off-by-one في إدارة المخزن المؤقت.
الأسلوب القديم
حلقة نسخ يدوية
الأسلوب الحديث
transferTo()
منذ JDK
9
الصعوبة
مبتدئ
دعم JDK
InputStream.transferTo()
متاح
متاح على نطاق واسع منذ JDK 9 (سبتمبر 2017)
كيف يعمل
تقرأ transferTo() جميع البايتات من تدفق الإدخال وتكتبها إلى تدفق الإخراج. لا إدارة مخزن مؤقت ولا حلقة. تستخدم مخزناً مؤقتاً داخلياً محسَّناً.
توثيق ذو صلة