تتطلب بعض السيناريوهات منك نسخ ملف في Java. ربما تقوم بإنشاء برنامج نصي بسيط لأتمتة العمليات لمدير الملفات. يمكنك حتى كتابة تطبيق كامل يعمل مع الملفات.

هناك العديد من الطرق التي يمكنك من خلالها نسخ ملف ، اعتمادًا على الأداء المطلوب أو البساطة أو حتى إصدار Java الذي تستخدمه.

كيفية نسخ الملفات باستخدام FileInputStream و FileOutputStream

تعمل هذه الطريقة عن طريق قراءة كل بايت من البيانات يدويًا من الملف ، وكتابتها إلى وجهة جديدة. بخلاف طريقة Files.copy أدناه ، يمكنك استخدام هذه الطريقة لجميع إصدارات Java ، بما في ذلك Java 6 والإصدارات السابقة.

يستخدم فئة FileInputStream لقراءة وحدات البايت من ملف مصدر ، ويستخدم فئة FileOutputStream لكتابة وحدات البايت إلى الوجهة.

  1. قم بإنشاء ملف في أي مكان على جهاز الكمبيوتر الخاص بك يسمى "SimpleScript.java".
  2. افتح الملف في محرر نصوص أو IDE ، وانسخ الكود الأساسي التالي إلى التطبيق.
    يستورد java.io. استثناء IO ؛

    صف دراسيسيمبسكريبت{
    عامثابتةفارغرئيسي(سلاسل السلسلة [])رميات IOException {
    // رمزك هنا
    }
    }

  3. قم باستيراد فئات دفق الإدخال والإخراج الإضافية هذه في أعلى الملف ، بعد بيان الاستيراد الأول مباشرةً.
    instagram viewer
    يستورد java.io. ملف؛
    يستورد java.io. تيار الإدخال؛
    يستورد java.io. إخراج:
    يستورد java.io. FileInputStream ؛
    يستورد java.io. FileOutputStream ؛
  4. قم بإنشاء ملف جديد يسمى "Copy-File-1.txt" ، في نفس المجلد مثل ملف SimpleScript.java الخاص بك. أضف أي محتوى مكتوب داخل الملف.
  5. في نفس المجلد ، أنشئ أيضًا دليلًا جديدًا يسمى "الوجهة". الهدف هو نسخ ملف "Copy-File-1.txt" إلى المجلد الجديد.
  6. داخل الوظيفة الرئيسية للفصل ، استخدم فئة File لإنشاء كائنين ملفين جديدين. المصدر ، الذي سيكون الملف الذي تريد نسخه ، والوجهة التي تريد نسخ الملف إليها. إذا لم يكن الملف الوجهة موجودًا ، فسيقوم برنامجك بإنشاء ملف جديد.
    صف دراسيسيمبسكريبت{ 
    عامثابتةفارغرئيسي(سلاسل السلسلة [])رميات IOException {
    // الطريقة الأولى لنسخ ملف
    مصدر الملف = الجديد ملف ("نسخ-ملف-1.رسالة قصيرة")؛
    وجهة الملف = الجديد ملف ("الوجهة / نسخ-ملف-1.رسالة قصيرة")؛
    }
    }
  7. بعد ذلك ، قم بإنشاء كائن InputStream و OutputStream.
    إدخال InputStream = لا شيء;
    إخراج OutputStream = لا شيء;
  8. استخدم دفق الإدخال لقراءة البيانات بالبايت ، ودفق الإخراج لكتابة البيانات إلى الموقع الجديد.
    محاولة {
    // إنشاء كائنات FileInputStream و FileOutputStream
    الإدخال = الجديد FileInputStream (المصدر) ؛
    الإخراج = الجديد FileOutputStream (وجهة) ،
    بايت[] buf = الجديدبايت[1024];
    int بايت

    // اكتب بايت إلى الوجهة
    في حين ((bytesRead = input.read (buf))> 0) {
    الإخراج. الكتابة (بوف ، 0bytesRead) ؛
    }
    } قبض على (استثناء IO هـ) {
    e.printStackTrace () ،
    System.out.println ("تعذر نسخ الملف إلى الوجهة:" + destination.getPath () + ". يفحص إذا المجلد أو الملف موجود بالفعل. ") ؛
    } أخيرا {
    // أغلق الجداول
    إذا (المدخلات! = لا شيء) {
    input.close () ؛
    }

    إذا (الإخراج! = لا شيء) {
    output.close () ؛
    }
    }

    System.out.println ("تم نسخ الملف") ؛

  9. لتشغيل البرنامج النصي ، افتح سطر أوامر. انتقل إلى المجلد حيث قمت بتخزين ملف Java الخاص بك باستخدام الأمر cd في ملف موجه أوامر Windows أو محطة ماك.
    قرص مضغوط سطح المكتب
  10. لتجميع البرنامج النصي ، احفظ ملف Java وقم بتشغيل ملف جافاك الأمر في سطر الأوامر:
    javac SimpleScript.java
  11. لتشغيل البرنامج النصي ، استخدم ملف جافا يأمر:
    جافا SimpleScript
    يجب أن ترى سطرًا واحدًا من الإخراج بدون أخطاء:
  12. انتقل إلى مجلد "الوجهة" لعرض الملف المنسوخ.
  13. افتح الملف لعرض المحتوى الذي قام برنامجك بنسخه من الملف الأصلي.

كيفية نسخ الملفات باستخدام Files.copy

إذا كنت تستخدم Java 7 أو إصدارًا أحدث ، فيمكنك استخدام طريقة Files.copy. هذه الطريقة بشكل عام هي تطبيق أبسط. بحسب ال وثائق جافا، هناك العديد من الأحمال الزائدة للوظيفة.

على سبيل المثال ، يمكن للطريقة Files.copy أيضًا استخدام دفق إدخال لنسخ الملفات من موقع إلى آخر ، ولكن من خلال طريقة تستخدم رمزًا أقل. يمكنك أيضًا استخدام المسارات ، أو تحديد الطريقة التي تريدها لنسخ ملفك بنفسك.

  1. قم بإنشاء ملف جديد يسمى "Copy-File-2.txt" ، في نفس المجلد مثل ملف SimpleScript.java الخاص بك. أضف أي محتوى مكتوب داخل الملف.
  2. في الجزء العلوي من الملف ، أضف واردات للملف "java.nio.file. المسارات "و" java.nio.file. فئات الملفات.
    يستورد java.nio.file. مسارات؛
    يستورد java.nio.file. الملفات ؛
  3. أضف سلسلتين ، تمثل مسار الملف النسبي للملف المصدر والوجهة. استخدم طريقة Files.copy ، والتي ستتعامل بالفعل مع المنطق لنسخ الملف إلى الوجهة.
    String copySource = "نسخ-ملف-2.رسالة قصيرة"؛
    String copyDestination = "الوجهة / نسخ الملف-2.رسالة قصيرة"؛

    محاولة {
    Files.copy (Paths.get (copySource) ، Paths.get (copyDestination)) ؛
    } قبض على (استثناء هـ) {
    System.out.println ("تعذر نسخ الملف إلى الوجهة:" + copyDestination + ". يفحص إذا المجلد أو الملف موجود بالفعل. ") ؛
    }
    System.out.println ("2nd تم نسخ الملف ") ؛

  4. قم بتشغيل البرنامج النصي باستخدام أوامر Javac و Java.
  5. انتقل إلى مجلد "الوجهة" لعرض الملف المنسوخ.

كيفية نسخ الملفات باستخدام FileChannel.transferTo ()

بحسب ال وثائق جافا، يمكن أن تكون هذه الطريقة طريقة أسرع لنسخ الملفات. ومع ذلك ، سيعتمد هذا على الطريقة التي تنفذ بها الوظيفة.

  1. قم بإنشاء ملف جديد يسمى "Copy-File-3.txt" ، في نفس المجلد مثل ملف SimpleScript.java الخاص بك. أضف بعض المحتوى النموذجي إلى هذا الملف.
  2. في الجزء العلوي من SimpleScript.java ، قم باستيراد "java.nio.channels. فئة FileChannel "جنبًا إلى جنب مع ثلاثة من الفئات السابقة ذات الصلة بالملف من الحزمة io.
    يستورد java.io. ملف؛
    يستورد java.io. FileInputStream ؛
    يستورد java.io. FileOutputStream ؛
    يستورد java.nio.channels. FileChannel ؛
  3. قم بإنشاء كائنات ملف للمصدر والوجهة ، واستخدمها لإنشاء دفق الإدخال وتدفق الإخراج.
    ملف src = الجديد ملف ("نسخ-ملف-3.رسالة قصيرة")؛
    ملف dst = الجديد ملف ("الوجهة / نسخ-ملف-3.رسالة قصيرة")؛
    FileInputStream inStream = الجديد FileInputStream (src) ،
    FileOutputStream OutStream = الجديد FileOutputStream (dst) ،
  4. استخدم الأسلوب TransferTo من فئة FileChannel لنسخ الملف إلى وجهته.
    محاولة {
    FileChannel inChannel = inStream.getChannel () ،
    FileChannel outChannel = outStream.getChannel () ،
    inChannel.transferTo (0، inChannel.size ()، outChannel)؛
    } قبض على (استثناء هـ) {
    System.out.println ("تعذر نسخ الملف إلى الوجهة:" + dst.getPath () + ". يفحص إذا المجلد أو الملف موجود بالفعل. ") ؛
    } أخيرا {
    // أغلق الجداول
    inStream.close () ،
    outStream.close () ،
    }
    System.out.println ("3rd تم نسخ الملف ") ؛
  5. قم بتشغيل البرنامج النصي باستخدام أوامر Javac و Java.
  6. انتقل إلى مجلد "الوجهة" لعرض الملف المنسوخ.

نسخ الملفات في Java هو مجرد البداية

هناك العديد من الطرق التي يمكنك من خلالها نسخ ملف في Java. تتضمن ثلاث طرق ممكنة استخدام طريقة الدفق التقليدية أو طريقة Files.copy أو طريقة TransferTo.

هناك العديد من عمليات إدارة الملفات الأخرى التي يمكنك تنفيذها باستخدام Java. يتضمن بعضها نقل الملفات أو حذفها أو ضغطها. يمكن أن تكون هذه مفيدة لمعرفة ما إذا كنت بحاجة إلى أتمتة عمليات معينة في مدير الملفات.