تستخدم Java دفق IO لتحقيق تجزئة ودمج الملفات الكبيرة
يجب أن يكون تجزئة الملفات وظيفة أكثر عملية. على سبيل المثال ، إذا كان لديك ملف 3G يحتاج إلى نسخه من جهاز كمبيوتر إلى آخر ، ولكن جهاز التخزين الخاص بك (مثل بطاقة SD) هو 1G فقط. في هذا الوقت ، يمكنك خفض الملف إلى ملفات 3 1G ، ونسخها بشكل منفصل ، وأخيراً دمج الملفات الثلاثة ، التي تحل المشكلة. على سبيل المثال ، لديك ملف لمئات M للتحميل إلى FTP ، ولكن هذا FTP يحد من ملفك الفردي لا يتجاوز 10 أمتار. في هذا الوقت ، يمكنك أيضًا استخدام تجزئة الملفات لحل المشكلة. نظرًا لأنه منقسم ، نحتاج إلى الاندماج عندما نستخدمه مرة أخرى. اليوم سوف ننفذ قدرة تقسيم الملفات ودمجها من خلال كود Java.
الآن ، سوف نظهر من خلال إظهار ملف من الجهاز الخاص بي. دليل الملفات هو: e: /eclipse-jee-juno-win32.zip (اليوم سأستمتع مع الكسوف الذي يكرهه الجميع):
يوضح الشكل التالي الموقف قبل التجزئة:
الوضع بعد التقسيم هو:
كيفية تقسيم الملفات في جافا:
. // احصل على اسم ملف اسم الملف = src.getName (). substring (0 ، src.getName (). indexof (".")) ؛ // احصل على ملف File Factix endname = src.getName (). substring (src.getName (). lastIndExof (".")) ؛ System.out.println (endname) ؛ inputStream في = null ؛ حاول {في = جديد fileInputStream (SRC) ؛ لـ (int i = 1 ؛ i <= m ؛ i ++) {stringBuffer sb = new StringBuffer () ؛ sb.append (src.getParent ()). إلحاق (اسم الملف) .append ("_ data"). إلحاق (i). System.out.println (SB.ToString ()) ؛ ملف file2 = ملف جديد (sb.toString ()) ؛ // قم بإنشاء دفق الإخراج لكتابة Files OutputStream = FileOutputStream جديد (File2) ؛ int len = -1 ؛ بايت [] بايت = بايت جديد [10*1024*1024] ؛ بينما ((len = in.read (bytes))! =-1) {out.write (bytes ، 0 ، len) ؛ if (file2.length ()> (l / m)) {break ؛ }} out.close () ؛ }} catch (استثناء e) {E.PrintStackTrace () ؛ } أخيرًا {try {in.close () ؛ } catch (ioException e) {E.PrintStackTrace () ؛ }}}} ملفات دمج جافا:
// طريقة دمج الملفات (تمرير في مسار الملف لدمج) private static void joinfiledemo (String ... src) {for (int i = 0 ؛ i <src.length ؛ i ++) {file file = file new (src [i]) ؛ filename string = file.getName (). substring (0 ، file.getName (). indexof ("_")) ؛ string endname = file.getName (). substring (file.getName (). lastIndExof (".")) ؛ StringBuffer SB = New StringBuffer () ؛ sb.append (file.getParent ()). إلحاق ("//"). إلحاق (filename) .append (endname) ؛ System.out.println (SB.ToString ()) ؛ حاول {// اقرأ دفق الإدخال للملفات الصغيرة inputStream في = fileInputStream جديد (ملف) ؛ // اكتب دفق الإخراج للملفات الكبيرة ملف ملفات 2 = ملف جديد (sb.toString ()) ؛ OutputStream Out = fileOutputStream جديد (file2 ، true) ؛ int len = -1 ؛ بايت [] بايت = بايت جديد [10*1024*1024] ؛ بينما ((len = in.read (bytes))! =-1) {out.write (bytes ، 0 ، len) ؛ } out.close () ؛ in.close () ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ }} system.out.println ("تم الانتهاء من دمج الملف!") ؛}اعتقدت أنه كان معقدًا للغاية قبل الكتابة ، لكن بعد كتابته ، اعتقدت أن الأمر كان كذلك. يمكنك ممارسة مهاراتك.
شكرا لك على القراءة ، آمل أن تساعدك. شكرا لك على دعمك لهذا الموقع!