في القسم السابق، تعلمنا كيفية إنشاء دفق إدخال بايت للملف، وفي هذا القسم، نواصل تعلم كيفية استخدام دفق الإدخال لقراءة البايتات وإغلاق الدفق.
الغرض من دفق الإدخال هو توفير قناة لقراءة البيانات من المصدر. يمكن للبرنامج قراءة البيانات من المصدر من خلال هذه القناة. يمكن لتدفق بايت الملف استدعاء طريقة القراءة الموروثة من الفئة الأم لقراءة الملف بشكل تسلسلي طالما أن الدفق غير مغلق، فإن كل استدعاء لطريقة القراءة يقرأ محتويات الملف المتبقية بشكل تسلسلي حتى نهاية الملف أو يتم إغلاق دفق إدخال بايت الملف.
تقرأ طريقة القراءة لدفق إدخال البايت البيانات الموجودة في المصدر بالبايت.
يستدعي دفق الإدخال هذه الطريقة لقراءة بايت واحد من البيانات من المصدر. تقوم هذه الطريقة بإرجاع قيمة البايت (عدد صحيح بين 0 و255).
يستدعي دفق الإدخال هذه الطريقة لمحاولة قراءة بايتات b.length من المصدر إلى صفيف البايتات b، ويعيد العدد الفعلي للبايتات المقروءة. إذا تم الوصول إلى نهاية الملف، فسيتم إرجاع -1.
يستدعي دفق الإدخال هذه الطريقة لمحاولة قراءة بايتات len من المصدر إلى صفيف البايت b، وإرجاع العدد الفعلي للبايتات المقروءة. إذا تم الوصول إلى نهاية الملف، فسيتم إرجاع -1، وتحدد المعلمة off موضعًا في صفيف البايت لبدء تخزين بيانات القراءة.
ملاحظة : يقرأ دفق FileInputStream الملف بالتسلسل طالما لم يتم إغلاق الدفق، فإن كل استدعاء لأسلوب القراءة يقرأ بقية محتوى المصدر بالتسلسل حتى نهاية المصدر أو الدفق.
توفر جميع تدفقات الإدخال طريقة إغلاق Close() على الرغم من أن جميع التدفقات المفتوحة سيتم إغلاقها تلقائيًا عند انتهاء البرنامج، إلا أنه لا يزال من الجيد إغلاق أي تدفقات مفتوحة بشكل صريح بعد انتهاء البرنامج من استخدام الدفق. إذا لم يتم إغلاق التدفقات المفتوحة، فقد لا يُسمح لبرنامج آخر بمعالجة الموارد المستخدمة بواسطة تلك التدفقات.
على سبيل المثال:
importjava.io.*;publicclassMain{publicstaticvoidmain(Stringargs[]){intn=-1;byte[]a=newbyte[100];try{Filef=newFile(Main.java);InputStreamin=newFileInputStream(f);while( (n=in.read(a,0,100))!=-1){Strings=newString(a,0,n);System.out.print(s);}in.إغلاق();}catch(IOExceptione) {System.out.println(FilereadError+e);}}}
ملاحظة : عند تحويل بايتات القراءة إلى سلسلة، يجب تحويل بايتات القراءة الفعلية إلى سلسلة، كما في المثال أعلاه:
Strings=newString(a,0,n);
لا يمكن كتابتها كـ:
Strings=newString(a,0,100);