دفق الأحرف مقابل دفق البايت في Java

دفق الأحرف مقابل دفق البايت في Java

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

  • دفق الإدخال: يقرأ البيانات من المصدر. 
  • تيار الإخراج: يكتب البيانات إلى الوجهة. 

متى يتم استخدام تدفق الأحرف عبر تدفق البايت:

يتم تخزين الأحرف في Java باستخدام اصطلاحات Unicode. يعد تدفق الأحرف مفيدًا عندما نريد معالجة الملفات النصية. يمكن معالجة هذه الملفات النصية حرفًا بحرف. حجم الحرف هو عادة 16 بت.

متى يتم استخدام تدفق البايت عبر تدفق الأحرف:

بايت الموجهة يقرأ بايت بايت. يعد تدفق البايت مناسبًا لمعالجة البيانات الأولية مثل الملفات الثنائية.

النقاط الأساسية أثناء استخدام والتعامل مع أي من التدفقات المذكورة أعلاه:

  • تنتهي فئات دفق الأحرف عادةً بـ Reader/Writer بينما تنتهي فئات دفق البايت بـ InputStream/OutputStream.
  • تستخدم رموز الأمثلة في هذه المقالة التدفقات غير المخزنة والتي تكون أقل كفاءة. للحصول على أداء أفضل، نقوم عادة بتغليفها باستخدام BufferedReader/BufferedWriter (تدفقات الأحرف) أو BufferedInputStream/BufferedOutputStream (تدفقات البايت).
  • قم دائمًا بإغلاق التدفقات بعد الاستخدام لتحرير الموارد ومنع الأخطاء.
  • قد لا تعمل الرموز المذكورة أعلاه في المترجمين عبر الإنترنت لأن الملفات قد لا تكون موجودة.

تيار الشخصية

يتم تخزين الأحرف في Java باستخدام اصطلاحات Unicode. يسمح لنا دفق الأحرف تلقائيًا بقراءة/كتابة البيانات حرفًا تلو الآخر. على سبيل المثال، FileReader وFileWriter عبارة عن تدفقات أحرف تستخدم للقراءة من المصدر والكتابة إلى الوجهة.

غير_unicode_bytesتيارات الشخصية

مثال

Java
   import     java.io.*  ;   public     class   GFG     {      public     static     void     main  (  String  []     args  )      throws     IOException      {      // Initially assigning null as we have not read anything      FileReader     sourceStream     =     null  ;      try     {      // Reading from file      sourceStream     =     new     FileReader  (  '/Users/mayanksolanki/Desktop/demo.rtf'  );      // Reading sourcefile and writing content to target file character by character.      int     temp  ;      // If there is content inside file than read      while     ((  temp     =     sourceStream  .  read  ())     !=     -  1  )      System  .  out  .  println  ((  char  )  temp  );          System  .  out  .  print  (  'Program successfully executed'  );      }          finally     {      if     (  sourceStream     !=     null  )      sourceStream  .  close  ();      }      }   }   

الإخراج:

يكتب المحتوى إلى الملف الهدف حرفًا بحرف

تم تنفيذ البرنامج بنجاح

بايت ستريم

دفق البايت في Java هو دفق يعالج إدخال وإخراج البيانات الثنائية الأولية ذات 8 بت. يستخدم بشكل أساسي لقراءة وكتابة البيانات غير النصية مثل الصور والصوت والفيديو أو أي ملف ثنائي. على سبيل المثال FileInputStream يستخدم للقراءة من المصدر وFileOutputStream للكتابة إلى الوجهة.

مثال:

Java
   import     java.io.*  ;   public     class   GFG     {      public     static     void     main  (  String  []     args  )      throws     IOException      {      // Initially assigning null ot objects for reading and writing to file      FileInputStream     sourceStream     =     null  ;      FileOutputStream     targetStream     =     null  ;      try     {      // Passing the files via local directory      sourceStream     =     new     FileInputStream  (  '/Users/mayanksolanki/Desktop/demo.rtf'  );      targetStream     =     new     FileOutputStream  (  '/Users/mayanksolanki/Desktop/democopy.rtf'  );      // Reading source file and writing content to file byte by byte      int     temp  ;      // If there is content inside file than read      while     ((  temp     =     sourceStream  .  read  ())     !=     -  1  )      targetStream  .  write  ((  byte  )  temp  );          System  .  out  .  print  (  'Program successfully executed'  );      }      // finally block that executes for sure where we are closing file connections to avoid memory leakage      finally     {      if     (  sourceStream     !=     null  )      sourceStream  .  close  ();      if     (  targetStream     !=     null  )      targetStream  .  close  ();      }      }   }   

الإخراج:

تم تنفيذ البرنامج بنجاح

دفق الأحرف مقابل اختلافات دفق البايت

وجه تيار الشخصية بايت ستريم
تمت معالجة نوع البيانات أحرف Unicode ذات 16 بت (نص) بيانات أولية 8 بت (ثنائية)
تنتهي الفصول ب القارئ / الكاتب تيار الإدخال / تيار الإخراج
مناسبة ل ملفات نصية بيانات Unicode صور ملفات الصوت والفيديو الثنائية
تحويل تحويل البايتات إلى أحرف تلقائيا لا يوجد تحويل يعمل مع وحدات البايت الأولية
أمثلة قارئ الملفات، كاتب الملفات FileInputStream FileOutputStream

مقالة ذات صلة

  • Java IO - الإدخال/الإخراج في Java مع أمثلة