في هذا الفصل، سنتعلم تدفقات الإدخال والإخراج للغة Java. نعلم جميعًا أنه أثناء تشغيل البرنامج، قد تحتاج البيانات المطلوبة إلى القراءة من وسائط التخزين الخارجية أو البرامج الأخرى، الأمر الذي يتطلب الاستخدام. من تيارات الإدخال تسمى نقطة دفق الإدخال مصدرها، ويقوم البرنامج بقراءة البيانات من المصدر من خلال دفق الإدخال.
من ناحية أخرى، بعد أن يقوم البرنامج بمعالجة البيانات، قد يحتاج إلى كتابة نتائج المعالجة إلى وسيط تخزين دائم أو نقلها إلى تطبيقات أخرى، الأمر الذي يتطلب استخدام دفق الإخراج. تسمى نقطة دفق الإخراج وجهتها، ويقوم البرنامج بنقل البيانات إلى الوجهة من خلال دفق الإخراج.
على الرغم من أن تدفقات الإدخال/الإخراج ترتبط غالبًا بالوصول إلى ملفات القرص، إلا أن المصدر والوجهة يمكن أن يكونا أيضًا لوحة المفاتيح أو الذاكرة أو نوافذ الشاشة.
توفر حزمة java.io (مكتبة دفق الإدخال/الإخراج) عددًا كبيرًا من فئات الدفق . جميع تدفقات الإدخال هي فئات فرعية من فئة InputStream المجردة (دفق إدخال البايت) أو فئة مجردة Reader (دفق إدخال الأحرف)، وجميع تدفقات الإخراج. هي فئة فرعية من فئة مجردة OutputStream (دفق إخراج البايت) أو كاتب فئة مجردة (دفق إخراج الأحرف).