جافا ، مثل العديد من اللغات الحديثةالبرمجة ، يدعم تنفيذ تدفقات إدخال البيانات. في Java ، يكون InputStream هو الفئة الأساسية لتدفقات البايت. هذه الفئة مجردة ، أي في سياق البرنامج ، لا يمكننا إنشاء مثيل لها. ومع ذلك ، هناك العديد من الفئات في حزمة io التي ترث وتوسع وظيفة InputStream. لاستخدام هذه الفئة في التعليمات البرمجية ، تحتاج إلى استيرادها من الحزمة java.io.InputStream. بعد ذلك ننظر إلى الوظائف الأساسية التي توفرها فئة InputStream ، بالإضافة إلى الفئات الرئيسية التي تنفذها.
قبل البدء في الدراسة التفصيليةأساليب من فئة InputStream ، تجدر الإشارة إلى أنها تنفذ واجهات Closeable و AutoCloseable. تخبرنا واجهة التوصيل أنه يجب عليك إغلاقها عند إكمال العمل باستخدام مؤشر ترابط. يتم ذلك باستخدام طريقة إغلاق (). نظرًا لأن معظم أساليب الفئة InputStream ، في حالة حدوث خطأ ، تطرح استثناء نوع IOException ، يجب إجراء جميع العمليات في كتلة المحاولة ، ويجب وضع طريقة إغلاق () في كتلة أخيرة بحيث تعمل بغض النظر عن نتيجة العمل في نص التجربة.
اجهة AutoCloseable يقلل بشكل كبيرمقدار الشفرة الفنية ، حيث إنها تسمح للأسلوب close () بالعمل تلقائيًا وعدم إضافة حظر نهائي إلى شفرتك. إذا كنت تستخدم الإصدار السابع أو الأحدث من Java ، فيمكن وضع InputStream في ما يسمى المحاولة مع الموارد ، والتي تأخذ جميع العمليات لإغلاق الدفق.
النظر في الطرق الأساسية للفئة InputStream:
يتم تنفيذ InputStream بواسطة عدة فئات مصممة للعمل مع مصادر مختلفة وأنواع البيانات. يوجد أدناه شجرة الوراثة.
دفق بايت لقراءة المعلومات من الملفاتيتم تنفيذها بواسطة فئة FileInputStream. لفتح ملف لقراءة وحدات البايت ، يكفي إنشاء مثيل لهذا الفصل الدراسي ، وتمريره إلى المُنشئ اسم الملف كوسيطة. إذا كان الملف الذي يحمل الاسم المنقول غير موجود ، فسيتم إنشاء استثناء من نوع FileNotFoundException.
في حالة فتح الملف بنجاح ، يتم تنفيذ العمل باستخدام الطرق الموضحة أعلاه ، لأن FileInputStream هو وريث InputStream.
المثال السابق وصف العمل معقيم البايت التي يمكن تفسيرها كأحرف. ولكن ماذا لو كنا بحاجة إلى قراءة قيمة صحيحة أو كسرية أو منطقية؟ للقيام بذلك ، يتم توسيع Java InputStream بشكل غير مباشر بواسطة فئة DataInputStream. هذه الفئة هي عبارة عن غلاف لبرنامج InputStream ، والذي يتم تمريره إليه عند تكوينه كوسيطة للمنشئ. هذا النوع من الدفق يقرأ البيانات في شكل ثنائي.
DataInputStream أيضا بتنفيذ واجهة DataInput وأساليبها لقراءة أنواع البيانات البدائية. فيما يلي قائمة بهذه الطرق.
أسماء الطرق تتحدث عن نفسها - كل منها مصمم لقراءة نوع بيانات معين.
يتم تنفيذ دفق بيانات قراءة مخزّنةفئة BufferedInputStream في جاوة. يتم دمج inputStream بواسطة هذا الفصل. يضيف هذا الفصل دفق إلى المخزن المؤقت الذي يسمح لك بقراءة ليس واحد ولكن عدة وحدات بايت في كل مرة. هذا يجعل من الممكن تحسين أداء العملية بشكل ملحوظ. BufferedInputStream هو سليل غير مباشر لـ InputStream ، وبالتالي ، يرث جميع الطرق المذكورة أعلاه.
يحتوي هذا الفصل على اثنين من المنشئات:
من الممكن أن نفهم من توقيع المنشئين أن أول واحد يحدد حجم المخزن المؤقت بشكل افتراضي ، بينما في الثاني هناك فرصة لتعيينه يدويا.
نظرنا في التطبيقات الرئيسية من InputStream. إذا كنت بحاجة إلى تحويل وحدات البايت الناتجة إلى سلسلة ، ثم Java InputStream to String () ، للأسف ، ليس فوق طاقتها ، لذلك تحتاج إلى استخدام أدوات مساعدة خاصة ، على سبيل المثال IOUtils من مكتبة Apache Commons.