اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر (معدل)

ان مصدر البيانات متعدد اما ان يكون الكيبورد (وهو القياسي ) أو يكون ملف و ممكن ان يكون socket أي قراءة البيانات من الشبكة وفي جميع الحالات يتم التعامل مع هذه المصادر من خلال ما يسمى مجرى البيانات Stream، أما الكتابة ممكن أن تكون على الشاشة وممكن أن تكون كتابة الى ملف او الى جهاز اخر عبر ال Socket، وكذلك هذه العمليات تتم بنفس الطريقة من خلال ال Stream. إذاً الغاية من استخدام المجاري Stream هي توحيد عمليات الادخال والإخراج بغض النظر عن الهدف. وال Stream هو تدفق البيانات من مصدر الى الهدف .

وأنواع المجاري هي اما Byte Streams او Character Streams. حيث نوع البيانات التي سأنقلها من المصدر الى الهدف هي التي تحدد نوع المجرى الذي سأتعامل معه، مثلا عندما نقرا من ملف نصي فيجب أن نأخذ مجرى محرفي ( كل محرف من 16 بت ) اما عندما تكون البيانات ثنائية مثلا أغنية او فيديو أو... عندها نتعامل مع مجرى Byte Streams حيث كل بايت من 8 بتات.

بعد معرفة نوع المجرى يجب تحديد المجرى هل هو مجرى دخل أم خرج ؟ أي هل برنامج سوف يقرا بيانات ام سوف يكتب بيانات ؟

اذا كان البرنامج يريد أن يقرا بيانات ثنائية فهو يتعامل مع Input Stream اما اذا كان البرنامج يريد أن يقرا بيانات محرفية فهو يتعامل مع Reader.
اذا كان البرنامج يريد أن يكتب بيانات ثنائية فهو يتعامل مع Output Stream اما اذا كان البرنامج يريد أن يكتب بيانات محرفية فهو يتعامل مع Writer.

IO.png

تم التعديل في بواسطة Ali Haidar Ahmad
  • 0
نشر

Stream في جافا هي قناة اتصال برمجية، تسمح للبرنامج بمساعدة نظام التشغيل، بالوصول لأدوات الإدخال و الإخراج في الحاسوب.

  • وحدات الإدخال: لوجة المفاتيح - الفأرة - الملفات.
  • وحدات الإخراج: الشاشة - الملفات.

يقوم المبرمج عادة بإنشاء قناة اتصال مع لوحة المفاتيح و الشاشة لتشغيل التطبيقات البسيطة..

لطباعة نص بسيط على الشاشة في Console يمكن استخدان التعليمة التالية:

نستخدم الصنف Scanner مع قناة الإدخال القياسة System.in..

String Name = "Esraa";
System.out.println("Hello " + Name);

=> Hello Esraa

حيث تم استخدام قناة الاتصال out الخاصة بمكتبة جافا.

لقراءة دخل المستخدم من لوحة المفاتيح:

// تضمين المكتبة
import java.util.Scanner;

class Main {
  public static void main(String[] args) {
	
	// إنشاء غرض لقراءة دخل المستخدم
    Scanner myObj = new Scanner(System.in);
	// رسالة توضيحية تطلب إدخال اسم المستخدم
    System.out.println("Enter username");
	
    String userName = myObj.nextLine();  // قراءة ما كتب المستخدم من خلال لوحة المفاتيح

    System.out.println("Username is: " + userName);  // طباعة
  }
}

مثال متقدم:

يمكننا طباعة أسماء الملفات في الحاسوب:

import java.io.File;
public class ReadDir {

   public static void main(String[] args) {
      File file = null;
      String[] paths;
  
      try {      
         // تعريف المسار كملف
         file = new File("D:\\");

         // جلب اسماء المجلدات و الملفات ضمن المسار
         paths = file.list();

         // حلقة على المصفوفة
         for(String path:paths) {
            // طباعة مسار كل ملف/مجلد
            System.out.println(path);
         }
      } catch (Exception e) {
         // طباعة الخطأ إن حدث
         e.printStackTrace();
      }
   }
}

جميع ما يتعلق بقنوات الاتصال في جافا في المخطط التالي

file_io.jpg

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...