ما الفروق بين مختلف Input و Output في مكتبة java.io ؟

السلام عليكم يا محبي الجافا الأعزء

أتشرف بأن أكون معكم و للإفادة و الاستفادة طبعا !

بدون أن أطيل عليكم ... أنهيت مؤخرا دورة في جافا للأستاذ عبد الله عيد جزاه الله خيرا ، و بدأت في دراسة بعض مكتبات جافا التي ستفيدني في توجهي أي برمجة الألعاب ، و طبعا مكتبة java.io كانت أول واحدة علما أني لم أكملها بعد ، نظرا لوثيرتي البطيئة بسبب الدراسة طبعا ، المهم ... لاحظت في هذه المكتبة أن هناك العديد من الكلاسات التي لها نفس الدور ألا وهو أنها كلها تتعامل مع الملفات غالبا بنفس الطريقة ، و أنا متأكد أن هناك عدة فروقات بينها ، هذا ما أردت مناقشتكم فيه ، ما الفروق بين مختلف Inputs و Outputs في مكتبة java.io ؟

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

بعد مشاهدة هذه السلسة العربية ستفهم 80 بالمئة إن شاء الله

شكرا أخي الكريم ، أنا ممتن لك جدا

انظر لها من طرف برنامج الجافا:

Input: المدخل إلى البرنامج (قراءة).

Output: المخرج من البرنامج (كتابة).

والمصدر قد يكون قراءة/كتابة من/إلى ملف، أول قراءة ما يكتبه المستخدم على الـ console أو كتابة نص ما ليقرأه المستخدم على الـ cosole. قد يكون أيضاً قراءة بيانات من الشبكة/الإنترنت (download)، وقد يكون كتابة بيانات إلى الشبكة/الإنترنت (Upload).

مكتبة java.io تنقسم إلى قسمين:

1- Byte Streams: وتعتمد على byte كوحدة، وأساسها الكلاسين InputStream و OutputStream.

2- Character Streams: وتعتمد على char كوحدة، وأساسها الكلاسين Reader و Writer.

طبعاً المكتبة java.io تعتمد على الـ Decorator Design Pattern، أي أن كلاس يضيف ميزة أخرى للأول. فمثلاً:

File file = new File("file.exe");
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis);

لاحظ أن الـ FileInputStream يقوم بإنشاء InputStream من الـ File، والكلاس BufferedInputStream يضيف خاصية الـ buffering إلى الـ InputStream الأصلي. الكلاس DataInputStream يضيف ميزة قراءة primitive data types قد تم كتابتها مسبقاً بالكلاس DataOutputStream.

الأمر ذاته مع عالم الـ Reader/Writer، لكن عادةً يتم استخدام الكلاسين InputStreamReader و OutputStreamWriter للتحويل من Byte Stream إلى Character Stream:

URL arabia = new URL("

https://arabia.io "); URLConnection uc = arabia.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(uc.getInputStream())); String inputLine; while ((inputLine = in.readLine()) != null) System.out.println(inputLine); in.close();

وللمعلومية، System.out و System.err ما هي إلا PrintStream وهي نوع من أنواع الـ OutputStream. يوجد مثيل لهذا الكلاس في عالم الـ Character Streams ألا وهو PrintWriter.

أيضاً System.in ما هو إلا InputStream بدون أي إضافات.

شرح مفيد ، بارك الله فيك و شكرا

و هل تعتبر عملية copy and past ايضا نوع من أنواع Streams ؟؟؟؟