تصف هذه المقالة الاختلافات واستخدام تدفقات أحرف Java وتيارات البايت. شاركه للرجوع إليه ، على النحو التالي:
الفرق الرئيسي بين تدفقات البايت وتيارات الأحرف هو طريقة المعالجة الخاصة بهم
تصنيف الدفق:
1. تيار بايت جافا
InputStream هو سلف جميع تدفقات الإدخال البايت ، في حين أن OutputStream هو سلف جميع تدفقات إخراج البايت.
2. دفق حرف جافا
القارئ هو سلف جميع تدفقات إدخال سلسلة القراءة ، في حين أن الكاتب هو سلف جميع سلاسل الإخراج.
InputStream ، OutputStream ، القارئ ، والكاتب كلها فصول مجردة. لذلك لا يمكنك فقط جديد
تيارات البايت هي الأكثر أساسية. تستخدم جميع الفئات الفرعية من InputStream و OutputStream بشكل أساسي لمعالجة البيانات الثنائية. تتم معالجتها بالبايت ، ولكن في الواقع ، هناك الكثير من البيانات. يقترح مفهوم تدفقات الشخصية. تتم معالجتها وفقًا لترميز الجهاز الظاهري ، أي تحويل مجموعات الأحرف. يرتبط الاثنان من خلال InputStreamReader و OutputStreamWriter ، ويرتبطون بالفعل من خلال البايت [] والسلسلة.
تسبب مشاكل الشخصية الصينية التي تنشأ في التطور الفعلي بالفعل عن التحويل غير المتسق بين تدفقات الأحرف وتيارات البايت.
عند التحويل من دفق البايت إلى دفق الأحرف ، يكون في الواقع عند تحويل البايت [] إلى سلسلة.
السلسلة العامة (بايت بايت [] ، سلسلة charsetname)
يوجد ترميز مجموعة أحرف معلمة رئيسية ، عادة ما نحذفه ، لذلك يستخدم النظام نظام التشغيل lang
عندما يتم تحويل دفق حرف إلى تيار بايت ، يكون في الواقع عندما يتم تحويل سلسلة إلى بايت [] ،
byte [] string.getBytes (String CharsetName)
وينطبق الشيء نفسه على العديد من التدفقات الأخرى في Java.io ، وخاصة لتحسين الأداء واستخدام الراحة.
مثل: BufferedInputStream ، PipedInputStream ، إلخ.
تنفيذ محدد
بايت دفق fileInputStream FileOutputStream
تدفق الحرف filewerter
وحدة معالجة دفق الأحرف هي 2 من أحرف Unicode ، التي تدير الأحرف أو صفائف الأحرف أو السلاسل على التوالي ، في حين أن وحدة معالجة دفق البايت هي بايت واحد ، والتي تعمل ببايت والبايت. لذلك ، يتكون دفق الأحرف من جهاز Java Virtual الذي يقوم بتحويل بايت إلى 2 بايت من أحرف Unicode ، لذلك فهو أكثر دعمًا للغات المتعددة! إذا كان ملفًا صوتيًا أو صورة أو أغنية ، فاستخدم بث البايت ، وإذا كان مرتبطًا بالصينية (النص) ، فاستخدم تدفق الأحرف.
يتم تخزين جميع الملفات بالبايت. ما يتم الاحتفاظ به على القرص ليس أحرف الملف ، ولكن يتم ترميز الأحرف في بايت أولاً ، ثم يتم تخزين البايتات على القرص. عند قراءة الملفات (وخاصة الملفات النصية) ، تتم قراءة بايت بايت أيضًا لتشكيل سلسلة من البايتات.
يمكن استخدام دفق البايت لأي نوع من الكائنات ، بما في ذلك الكائنات الثنائية ، في حين أن دفق الأحرف يمكنه فقط معالجة الأحرف أو السلاسل ؛ 2. يوفر دفق البايت وظيفة التعامل مع أي نوع من عمليات IO ، ولكن لا يمكنه معالجة أحرف Unicode مباشرة ، بينما يمكن لتيار الأحرف القيام بذلك.
يمكن تحويل تدفقات البايت إلى تدفقات أحرف باستخدام inputSteamReader outputStreamWriter
تحويل إلى BufferDreader BufferedWriter لديهم مخازن المؤقتة على سبيل المثال: اقرأ الملفات من إدخال دفق البايت إلى إدخال دفق الأحرف تعريف دفق بايت:
fileInputStream FileInputStream = جديد fileInputStream ("d: /text.txt") ؛ // تحديد دفق بايت يشير إلى d: /text.txt inputStreamReader inputStreamReader = new inputstreamreader (fileInputStream) ؛ BufferedReader (InputSteamReader) ؛ // inputstreamreader يتحول إلى Bufferreader مع ذاكرة التخزين المؤقتيمكنك تعيين محتوى القراءة للأحرف
String ss = new string () ؛ string s ؛ بينما ((s = bufferedReader.ReadLine ())! = null) {ss += s ؛} fileInputStream fileInputStream = جديد fileInputStream ("d: /text.txt") ؛ // تحديد دفق بايت يشير إلى d: /text.txt inputStreamReader inputStreamReader = new inputStreamReader (fileInputStream) ؛ // تحويل دفق البايت إلى InputStreamReader Bufferreader Bufferreader = جديد BufferedReader (InputSteamReader) ؛ // يتم تحويل InputStreamReader إلى قائد Bufferreader مع ذاكرة التخزين المؤقت. يمكنك تعيين محتوى القراءة إلى سلسلة الأحرف ss = new string () ؛ سلسلة S ؛ بينما ((s = bufferedReader.ReadLine ())! = null) {ss += s ؛ }على سبيل المثال: اكتب ملفًا من دفق البايت إلى إخراج دفق الأحرف
fileOutputStream fileOutputStream = جديد fileOutputStream ("d: /text.txt") ؛ // تحديد ملف يشير إلى d: /text.txt outputstreamwriter outputstreamwriter = new outputStreamWriter (fileOutputStream) ؛ bufferedWriter BufferedWriter = جديد BufferedWriter (OutputStreamWriter) ؛ BufferedWriter.write (s) ؛ bufferedWriter.close () ؛ outputStreamWriter.close () ؛ fileOutputStream fileOutputStream = newOutputStream ("d: /text.txt") ؛ // تحديد ملف يشير إلى d: /text.txt outputstreamwriter outputStreamWriter = new OutputStreamWriter (fileOutputTream) ؛ BufferedWriter BufferedWriter = new BufferedWriter (OutputStreamWriter) ؛روتين:
تحويل السلاسل إلى تيارات بايت#المنطقة تحويل السلاسل إلى تدفقات البايت
/**//// <summary> //// تحويل سلسلة إلى دفق بايت /// </summary> /// <param name = "_ source"> String </param> /// <returns> Byte Stream </returns> public static byte [] string2bytes (Strrsource) {System.Memorystream MemoryStream ؛ System.io.binaryWriter BinaryWriter = new System.io.binaryWriter (MemoryStream) ؛ BinaryWriter.write (StrSource) ؛ byte [] buffer = memorystream.getBuffer () ؛ إرجاع المخزن المؤقت ؛}#endregionتحويل تدفقات البايت إلى سلاسل #Region تحويل تدفقات البايت إلى سلاسل
/**///// <summary> //// تحويل تدفقات البايت إلى سلاسل /// </summary> /// <param name = "bytdata"> تدفقات البايت </param> /// System.io.MemoryStream (bytdata) ؛ System.io.binaryReader BinaryReader = new System.io.binaryReader (MemoryStream2) ؛ السلسلة S2 = BinaryReader.ReadString () ؛ إرجاع S2 ؛}#endregion
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.