تجزئة الملفات ودمجها هي مطلب شائع. على سبيل المثال: عند تحميل الملفات الكبيرة ، يمكن تقسيمها إلى قطع صغيرة أولاً ، ثم نقلها إلى الخادم قبل الاندماج. في العديد من أنظمة الملفات الموزعة المتطورة (مثل GFS من Google و TFS من TAOBAO) ، يتم أيضًا تقسيم الملفات أو دمجها وفقًا لوحدات الكتلة.
ألق نظرة على الأفكار الأساسية:
إذا كان هناك ملف كبير ، فحدد حجم الانقسام (على سبيل المثال: مقطوع بمقدار 1 م)
الخطوة 1:
أولاً ، احسب عدد الملفات الصغيرة التي يتم تقسيمها أخيرًا بناءً على حجم الملف الأصلي وحجم التجزئة.
الخطوة 2:
قم بإنشاء هذه الملفات الصغيرة على القرص
الخطوة 3:
افتح مؤشرات ترابط متعددة (عدد مؤشرات الترابط = عدد الملفات المقسمة). في كل مؤشر ترابط ، استخدم وظيفة SEEK من RandomAccessFile لتحديد موقع مؤشر القراءة إلى الموضع الأول من كل قطعة في الملف الأصلي ، ثم اقرأ الحجم المحدد للخلف (أي حجم الكتلة المجزأة) ، وأخيراً اكتب ملف الانقسام المقابل. نظرًا لأن عمليات التوقيرات المتعددة بالتوازي ، يكتب كل منها ملف صغير خاص به ، وهو سريع نسبيًا.
الرمز التالي هو تقسيم ملف إلى فرعي متعددة ، كل منها بحجم 100 ألف
package testio ؛ import java.io.file ؛ import java.io.fileInputStream ؛ import java.io.fileOutputStream ؛ import java.util.arrays ؛ public class substream {public static void main (string [] ملف ("f: /test/test.txt") ؛ // قم بإنشاء splitfile كائن ملف (srcfile ، كل شيء) ؛} splitfile public static static (ملف srcfile ، int verysize) fileContent = new byte [(int) srcfile.length ()] filenumber ؛ if (fileContent.length ٪ eSsize == 0) {fileNumber = fileContent.length/everysize ؛} else {fileNumber = fileContent.length/everyize+1 ؛} for (int i = 0 ؛ ملف (srcfile.getParent () ، اسم الملف) ؛ // إنشاء ملف تقسيم تحت بايت مسار الملف الحالي [] EveryContent ؛ // انسخ محتويات الملف المصدر في ملف split if (i! = fileNumber-1) Arrays.copyofrange (fileContent ، كل شيء*i ، fileContent.length) ؛} حاول {fileOutputStream fos = new FileOutputStream (fi) ؛ fos.write (كل ما هو حجمه) ؛ ٪ d/n "، fi.getabsolutefile () ، fi.length () ، earyContent.length) ؛} catch (استثناء e) {// todo: التعامل مع الاستثناء e.printstacktrace () ؛}}}}}لخص
ما ورد أعلاه هو المحتوى الكامل لهذه المقالة حول تقسيم ملف إلى أمثلة متعددة من رمز الرمز الفرعي. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!