المقدمة: تنقسم تدفقات IO بشكل أساسي إلى فئتين ، وهما تيارات البايت وتيارات الأحرف
يلاحظ:
1. استخدم تدفقات البايت للملفات الصوتية والصور ومقاطع الفيديو (نطاق واسع).
2. إذا كان ينطوي على نص فقط ، فاستخدم تدفقات الأحرف
نسخ محتوى النص باستخدام دفق البايت (يمكن أن تكون الملفات الأخرى)
الرمز كما يلي:
استيراد java.io.file ؛ استيراد java.io.fileInputStream ؛ استيراد java.io.filenotfoundexception ؛ استيراد java.io.fileOutputStream ؛ استيراد java.io.ioexception ؛ infile = ملف جديد ("src.txt") ؛ // source file inputStream in = new FileInputStream (infile) ؛ // ملف إدخال الملف ملف outfile = ملف جديد ("tar.txt") ؛ // File File OutputStream Out = جديد fileOutputStream (outfile) ؛ // File Output Dream Byte [] Buff = New Byte [1024] ؛ // إنشاء مخزن مؤقت وتخصيص 1024 بايت من الذاكرة إلى Buff int num = 0 ؛ بينما ((num = in.read (buff))! =-1) {// judge ما إذا كان الحد الأقصى لعدد البايتات هو 1024 Out.write (Buff ، 0 ، num) ؛ // out.write (Buff) ؛ // هذا على ما يرام ، ولكن من السهل التسبب في محتوى ملف غير صحيح Out.flush () ؛ // Fresh the Buffer String S = New String (Buff) ؛ System.out.println ("نسخ محتوى الملف بنجاح") ؛ System.out.println ("محتوى نسخ الملف هو /n"+s) ؛ } in.close () ؛ // أغلق دفق الإدخال Out.close () ؛ // أغلق دفق الإخراج // infile.delete () ؛ // حذف الملف المصدر // outfile.renameto (ملف جديد ("RENAME.TXT")) ؛ // إعادة تسمية ملف الإخراج} catch (fileNotFoundException e) {E.PrintStackTrace () ؛ // اطبع معلومات الاستثناء على سطر الأوامر وسبب الخطأ في البرنامج} catch (ioException e) {E.PrintStackTrace () ؛ }}}نسخ محتوى النص باستخدام تدفقات الأحرف (الملفات النصية فقط)
الرمز كما يلي:
استيراد java.io.bufferedreader ؛ استيراد java.io.bufferedWriter ؛ استيراد java.io infile = ملف جديد ("d: /src.txt") ؛ // source file fileReader fileReader = new fileReader (infile) ؛ // قراءة ملفات الملف دفق Bufferreaderer Bufferreader = جديد BufferedReader (FileReader) ؛ // ضع أحرف القراءة في ملف Cache Outfile = جديد ("d: /tar.txt") ؛ // FILEWRITER FILEWRITE = new filewriter (outfile) ؛ // كتابة دفق الحرف bufferedWriter BufferedWriter = جديد bufferedWriter (filewrite) ؛ // ضع دفق الحرف المراد إدخاله في سلسلة ذاكرة التخزين المؤقت S = "" ؛ سلسلة str = "" ؛ بينما ((s = bufferedReader.ReadLine ())! = null) {// حدد ما إذا كان دفق حرف الملف قد تمت قراءة bufferedWriter.write (s) ؛ // يتم كتابة ذاكرة التخزين المؤقت لدفق الحرف إلى ملف bufferedWriter.newline () ؛ // اقرأ عن طريق السطر ، إذا تمت مواجهة حرف NewLine ، فإن NewLine BufferedWriter.flush () ؛ // cache fresh str+= s ؛ } system.out.println ("محتوى نسخ الملف هو /n"+str) ؛ // أغلق دفق الإدخال والإخراج fileReader.close () ؛ bufferedReader.Close () ؛ filewrite.close () ؛ bufferedWriter.Close () ؛ bufferedWriter.Close () ؛ // infile.delete () ؛ // حذف الملف المصدر // outfile.renameto (ملف جديد ("RENAME.TXT")) ؛ // إعادة تسمية ملف الإخراج} catch (fileNotFoundException e) {E.PrintStackTrace () ؛ // اطبع معلومات الاستثناء على سطر الأوامر وسبب الخطأ في البرنامج} catch (ioException e) {E.PrintStackTrace () ؛ }}}يوضح:
إذا كنت ترغب في نسخ المحتوى النصي عن طريق إلحاق محتوى الملف بدلاً من الكتابة فوقه ، فقم بتعديله على النحو التالي
OutputStream Out = fileOutputStream جديد (Outfile ، true) ؛ // بايت تيار
filewriter filewrite = new filewriter (outfile ، true) ؛ // دفق الحرف
إذا كنت ترغب في تحديد حجم ذاكرة التخزين المؤقت في دفق الأحرف ، فقم بتعديله على النحو التالي
BufferedWriter BufferedWriter = New BufferedWriter (Filewrite ، 1024) ؛