في جافا ، هناك طريقة بسيطة لتوضيح ما يلي:
public static void movefolder (String OldPath ، String NewPath) {// انسخ نسخ الملف (OldPath ، NewPath) ؛ // حذف الملف المصدر لتجنب إرباك deletedir (ملف جديد (OldPath)) ؛ } لا ينبغي قطع الملفات مباشرة لمنع الأخطاء أثناء القطع ، مما يؤدي إلى مشاكل من نوع أو آخر.
تم شرح المجلدات النسخ وجميع الأفكار الفرعية والمجلدات الفرعية في Java بالتفصيل في المقالة "[Java] يستخدم تدفقات إدخال الملفات والإخراج لإكمال عملية نسخ جميع الملفات في مجلد واحد ومجلد آخر" (انقر لفتح الرابط).
المفتاح هو حذف المجلدات ، فرعيها ومجلداتها الفرعية.
في Java ، يمكن لطريقة Delete () لفئة الملفات فقط حذف المجلدات الفارغة أو الملفات المفردة. لذلك ، من الضروري اجتياز المجلد بأكمله ، والبدء في الملفات في المجلد الأعمق ، وأداء الحذف العودية. الطريقة المحددة هي كما يلي:
. // حذف بشكل متكرر الدليل الفرعي في الدليل (int i = 0 ؛ i <children.length ؛ i ++) {// file f = file new (string parent ، string child) // يتم استخدام اسم المسار الملخص الأصل لتمثيل الدلائل ، ويستخدم سلسلة مسار الطفل لتمثيل الدلائل أو الملفات. // مسار الملف هو بالضبط نفس مسار الملف. Boolean Isdelete = deletedir (ملف جديد (dir ، الأطفال [i])) ؛ // إذا قمت بحذفه ولم يكن هناك شيء لحذفه ، و isDelete == false ، فسيظهر العودية إذا (! isDelete) {return false ؛ }}} // ما تقرأه هو ملف أو دليل فارغ ، يمكنك حذف return dir.delete () ؛ } لذلك ، هذه هي الطريقة التي يتم بها توصيل الطريقة بأكملها ، ونقل المجلد وجميع الأفكار الفرعية والمجلدات الفرعية تحت القرص C إلى القرص F ، وإعادة تسميته:
استيراد java.io.*؛ cuttest الفئة العامة {// حذف جميع الأطراف الفرعية والملفات في الدليل والدليل الثابت المنطقي الثابت (ملف) {// إذا كان مجلد إذا (dir.isdirectory ()) {// اقرأ جميع الملفات في سلسلة المجلد [] الأطفال = dir.list () ؛ // حذف بشكل متكرر الدليل الفرعي في الدليل (int i = 0 ؛ i <children.length ؛ i ++) {// file f = file new (string parent ، string child) // يتم استخدام اسم المسار الملخص الأصل لتمثيل الدلائل ، ويستخدم سلسلة مسار الطفل لتمثيل الدلائل أو الملفات. // متصل معًا هو مسار الملف boolean isDelete = deletedir (ملف جديد (dir ، الأطفال [i])) ؛ // إذا قمت بحذفه ولم يكن هناك شيء لحذفه ، و isDelete == false ، ثم القفز بشكل متكرر من هذا الوقت إذا (! isDelete) {return false ؛ }}} // إذا قرأت ملفًا أو دليلًا فارغًا ، فيمكنك حذف return dir.delete () ؛ } // انسخ جميع الأطراف الفرعية والملفات في دليل ودليل معين إلى المجلد الجديد النسخ الفراغ الثابت (String OldPath ، String NewPath) {try {// إذا لم يكن المجلد موجودًا ، قم بإنشاء ملف جديد (جديد) (newPath)). mkdirs () ؛ // اقرأ محتويات المجلد بأكمله إلى صفيف سلسلة الملفات ، وقم بتعيين مؤشر I أدناه ، وحركه لأسفل لبدء قراءة ملف ملف Array = ملف جديد (OldPath) ؛ string [] file = fileList.List () ؛ // لاحظ أن هذه درجة الحرارة هي مجرد مؤشر ملف مؤقت // لا يقوم البرنامج بأكمله بإنشاء TEMP = NULL ؛ لـ (int i = 0 ؛ i <file.length ؛ i ++) {// إذا انتهى OldPath مع فاصل مسار/أو/، فإن اسم الملف OldPath جيد // خلاف ذلك ، أضف فاصل مسار بعد OldPath وأضف اسم ملف // من يعرف ما إذا كانت المعلمة التي تم تمريرها هي f:/a أو f: a/a/؟ if (oldpath.endswith (file.separator)) {temp = file new (oldpath + file [i]) ؛ } else {temp = new file (OldPath + File.separator + file [i]) ؛ } // إذا كان المؤشر يواجه ملفًا if (temp.isfile ()) {fileInputStream input = new FileInputStream (temp) ؛ // copy fileOutputStream outputing = new FileOutputStream (newPath + "/" + "RENAME_" + (temp.getName ()). toString ()) ؛ Byte [] BufferArray = New Byte [1024 * 64] ؛ int preeadlength ؛ بينما ((preeReadLength = input.Read (bufferArray))! = -1) {output.write (bufferArray ، 0 ، preadLength) ؛ } output.flush () ؛ output.close () ؛ input.close () ؛ } // إذا كان المؤشر يواجه مجلد إذا (temp.isDirectory ()) {copyPholder (OldPath + "/" + file [i] ، newPath + "/" + file [i]) ؛ }}} catch (استثناء e) {system.out.println ("خطأ في نسخ محتوى المجلد بأكمله") ؛ }} public static void movefolder (String OldPath ، String NewPath) {// انسخ الملف الأول COLOTOLDER (OldPath ، NewPath) ؛ // حذف الملف المصدر لتجنب إرباك deletedir (ملف جديد (OldPath)) ؛ } public static void main (string [] args) {MoveFolder ("c:/a" ، "f:/b") ؛ }}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.