على الرغم من أن Java توفر فئة تشغيل IO التي يمكنها التعامل مع الملفات. ولكن لا توجد طريقة لنسخ الملفات. يعد نسخ الملفات عملية مهمة عندما يتعين على البرنامج التعامل مع العديد من الملفات المتعلقة. ومع ذلك ، هناك عدة طرق لنسخ ملفات Java ، والما يلي هي الأساليب الأكثر شعبية.
1. نسخ باستخدام filestreams
هذه هي الطريقة الأكثر كلاسيكية لنسخ محتويات ملف إلى آخر. استخدم FileInputStream لقراءة وحدات الملف A واستخدام FileOutputStream للكتابة إلى ملف B. هذا هو الرمز للطريقة الأولى:
private static void copyfileusingfilestreams (مصدر الملف ، مصير الملف) يلقي ioException {inputStream input = null ؛ OutputStream Output = null ؛ حاول {input = new FileInputStream (Source) ؛ الإخراج = FileOutputStream جديد (Dest) ؛ Byte [] buf = new byte [1024] ؛ int bytesread ؛ بينما ((bytesRead = input.Read (buf))> 0) {output.write (buf ، 0 ، bytesread) ؛ }} أخيرًا {input.close () ؛ output.close () ؛ }} كما ترون ، نقوم بإجراء العديد من عمليات القراءة والكتابة لتجربة البيانات ، لذلك يجب أن تكون هذه طريقة غير فعالة ، والطريقة التالية سنرى طريقة جديدة.
2. نسخ باستخدام Filechannel
يتضمن Java NIO طريقة النقل من SNESSOM ، والتي يجب نسخها بشكل أسرع من تدفقات الملفات بناءً على المستند. فيما يلي رمز الطريقة الثانية:
private static void copyFileusingFileChannels (مصدر الملف ، ملف الملف) يلقي ioException {filechannel inputChannel = null ؛ filechannel outputChannel = null ؛ حاول {inputChannel = new FileInputStream (source) .getChannel () ؛ outputChannel = جديد fileOutputStream (dest) .getChannel () ؛ outputChannel.transferfrom (inputChannel ، 0 ، inputChannel.size ()) ؛ } أخيرًا {inputChannel.Close () ؛ outputChannel.Close () ؛ }}3. نسخ باستخدام العموم IO
توفر Apache Commons IO طريقة ملف نسخ في فئة FileUtils الخاصة بها ، والتي يمكن استخدامها لنسخ ملف إلى آخر. إنه مناسب جدًا عند استخدام فئة Apache Commons FileUtils عندما تستخدم مشروعك بالفعل. في الأساس ، يستخدم هذا الفئة Java Nio FileChannel Internals. هذا هو رمز الطريقة الثالثة:
private static void copyFileusingApacheCommonsio (مصدر الملف ، مصير الملف) يلقي ioException {fileutils.copyfile (المصدر ، القدر) ؛ }4. نسخ باستخدام فئة ملفات Java7
إذا كان لديك بعض الخبرة في Java 7 ، فقد تعرف أنه يمكنك استخدام طريقة النسخ لنسخها من ملف إلى آخر. هذا هو رمز الطريقة الرابعة:
private static void copyfileusingjava7files (مصدر الملف ، مصير الملف) يلقي ioException {files.copy (source.topath () ، dest.topath ()) ؛ }دعنا نلقي نظرة على رمز التنفيذ لنسخ ملف Java إلى دليل آخر. الرمز المحدد كما يلي:
package com.util ؛ import java.io.file ؛ import java.io.fileinputStream ؛ import java.io.fileOutputStream ؛ import java.io.inputstream ؛ public class testhtml {/** regurn boolean */ public void copyfile (String OldPath ، String NewPath) {try {int bytesum = 0 ؛ int byteread = 0 ؛ ملف oldfile = ملف جديد (OldPath) ؛ if (oldfile.exists ()) {// inputStream instream = new FileInputStream (OldPath) ؛ // اقرأ في الملف الأصلي fileOutputStream FS = جديد fileOutputStream (newPath) ؛ Byte [] Buffer = New Byte [1444] ؛ طول int بينما ((byteread = instream.read (buffer))! = -1) {bytesum += byteread ؛ // bytes size size system.out.println (bytesum) ؛ fs.write (العازلة ، 0 ، byteread) ؛ } instream.close () ؛ }} catch (استثناء e) {system.out.println ("خطأ نسخ ملف واحد") ؛ E.PrintStackTrace () ؛}}/** * انسخ محتوى المجلد بأكمله * Param OldPath String مسار الملف الأصلي مثل: C:/fqf * param newpath String Path بعد النسخ هو: f:/fqf/ff * return boolean */public void copypath (String Oldpath) // إذا لم يكن المجلد موجودًا ، فقم بإنشاء ملف مجلد جديد A = ملف جديد (OldPath) ؛ string [] file = A.List () ؛ ملف temp = null ؛ لـ (int i = 0 ؛ i <file.length ؛ i ++) {if (oldpath.endswith (file.separator)) {temp = new file (oldpath+file [i]) ؛ } else {temp = new file (OldPath+File.separator+file [i]) ؛ } if (temp.isfile ()) {fileInputStream input = new FileInputStream (temp) ؛ FileOutputStream Output = جديد fileOutputStream (newPath + "/" + (temp.getName ()). toString ()) ؛ بايت [] ب = بايت جديد [1024 * 5] ؛ int len ؛ بينما ((len = input.Read (b))! = -1) {output.write (b ، 0 ، len) ؛ } output.flush () ؛ output.close () ؛ input.close () ؛ } if (temp.isdirectory ()) {// إذا كان نسخًا لمجلس فرعي (OldPath+"/"+file [i] ، newPath+"/"+file [i]) ؛ }}} catch (استثناء e) {system.out.println ("خطأ نسخ عملية محتوى المجلد بأكمله") ؛ E.PrintStackTrace () ؛}} static void main (string [] args) يلقي الاستثناء {// // هذا هو ملف المصدر الخاص بك ، والذي يوجد نفسه // ملف قبل file = ملف جديد ( eleffile = ملف جديد ("c: /users/administrator/desktop/jiekou0/untitled-2.html") ؛ /// // تحديد دفق إدخال الملف لقراءة ملف repiledfile // fileInputStream fis = new fileInputStream (pirefile) ؛ FileOutputStream (efterfile) ؛ //// // ملف ذاكرة التخزين المؤقت للملف // byte [] b = new byte [1024] ؛ // // اقرأ معلومات دفق الملف في منطقة ذاكرة التخزين المؤقت للملف. إذا لم تكن نتيجة القراءة -1 ، فهذا يعني أنه لم تتم قراءة الملف ، وتم قراءته. OldPath = "c: /users/administrator/desktop/untitled-2.html" ؛ string newPath = "c: /users/administrator/desktop/jiekou0/untitled-2.html" ؛ testhtml t = new testhtml () ؛لخص
ما ورد أعلاه هي الطرق الأربع لنسخ الملفات في Java و Code example لنسخ الملفات إلى دليل آخر قدمه المحرر. آمل أن يكون ذلك مفيدًا للجميع. إذا كان لديك أي أسئلة ، فالرجاء ترك رسالة لي وسوف يرد المحرر على الجميع في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!