ใน Java มีวิธีง่ายๆในการอธิบายสิ่งต่อไปนี้:
โมฆะสาธารณะคงที่สาธารณะ MoveFolder (String OldPath, String newPath) {// คัดลอกไฟล์ CopyFolder (oldPath, newPath); // ลบไฟล์ต้นฉบับเพื่อหลีกเลี่ยงความสับสน deletedir (ไฟล์ใหม่ (oldpath)); - ไฟล์ไม่ควรถูกตัดโดยตรงเพื่อป้องกันข้อผิดพลาดระหว่างการตัดส่งผลให้เกิดปัญหาประเภทใดชนิดหนึ่ง
การคัดลอกโฟลเดอร์และ subfiles และโฟลเดอร์ย่อยทั้งหมดใน Java ได้รับการอธิบายอย่างละเอียดในบทความ "[Java] ใช้สตรีมอินพุตและเอาต์พุตเพื่อดำเนินการคัดลอกไฟล์ทั้งหมดในโฟลเดอร์หนึ่งและโฟลเดอร์อื่น" (คลิกเพื่อเปิดลิงค์)
กุญแจสำคัญคือการลบโฟลเดอร์ย่อยและโฟลเดอร์ย่อยของพวกเขา
ใน Java วิธีการลบ () ของคลาสไฟล์สามารถลบโฟลเดอร์เปล่าหรือไฟล์เดียวเท่านั้น ดังนั้นจึงจำเป็นต้องสำรวจโฟลเดอร์ทั้งหมดเริ่มต้นด้วยไฟล์ในโฟลเดอร์ด้านในสุดและทำการลบซ้ำ วิธีเฉพาะมีดังนี้:
// ลบไดเรกทอรีย่อยทั้งหมดและไฟล์ในไดเรกทอรีและไดเรกทอรีบูลีนสแตติกสาธารณะ deletedir (ไฟล์ dir) {// ถ้าเป็นโฟลเดอร์ถ้า (dir.isdirectory ()) {// อ่านไฟล์ทั้งหมดในสตริงโฟลเดอร์ [] เด็ก = dir.list (); // ลบไดเรกทอรีย่อยซ้ำในไดเรกทอรีสำหรับ (int i = 0; i <children.length; i ++) {// ไฟล์ f = ไฟล์ใหม่ (สตริงพาเรนต์, เด็กสตริง) // ชื่อเส้นทางนามธรรมของพาเรนต์ใช้เพื่อแสดงไดเรกทอรี // พา ธ ไฟล์เหมือนกับเส้นทางไฟล์ บูลีน isdelete = deletedir (ไฟล์ใหม่ (dir, เด็ก [i])); // ถ้าคุณลบมันและไม่มีอะไรที่จะลบออกและ isdelete == false การเรียกซ้ำจะปรากฏขึ้นถ้า (! isdelete) {return false; }}} // สิ่งที่คุณอ่านคือไฟล์หรือไดเรกทอรีที่ว่างเปล่าคุณสามารถลบการส่งคืน dir.delete () โดยตรง; - ดังนั้นนี่คือวิธีการเชื่อมต่อวิธีการทั้งหมดย้ายโฟลเดอร์และไฟล์ย่อยทั้งหมดและโฟลเดอร์ย่อยภายใต้ดิสก์ C ไปดิสก์ F และเปลี่ยนชื่อ:
นำเข้า Java.io.*; คลาสสาธารณะ cuttest {// ลบไดเรกทอรีย่อยทั้งหมดและไฟล์ในไดเรกทอรีและไดเรกทอรีบูลีนแบบคงที่สาธารณะ deletedir (ไฟล์ dir) {// ถ้าเป็นโฟลเดอร์ถ้า (dir.isdirectory ()) {// อ่านไฟล์ทั้งหมดในสตริงโฟลเดอร์ [] เด็ก = dir.list (); // ลบไดเรกทอรีย่อยซ้ำในไดเรกทอรีสำหรับ (int i = 0; i <children.length; i ++) {// ไฟล์ f = ไฟล์ใหม่ (สตริงพาเรนต์, เด็กสตริง) // ชื่อเส้นทางนามธรรมของพาเรนต์ใช้เพื่อแสดงไดเรกทอรี // เชื่อมต่อเข้าด้วยกันเป็นไฟล์ Path Boolean ISDELETE = DELETEDIR (ไฟล์ใหม่ (DIR, เด็ก [i])); // ถ้าคุณลบมันและไม่มีอะไรที่จะลบออกและ isdelete == false จากนั้นก็กระโดดออกมาซ้ำ ๆ ในเวลานี้ถ้า (! isdelete) {return false; }}} // ถ้าคุณอ่านไฟล์หรือไดเรกทอรีที่ว่างเปล่าคุณสามารถลบ return dir.delete () โดยตรง; } // คัดลอกไดเรกทอรีย่อยและไฟล์ทั้งหมดในไดเรกทอรีและไดเรกทอรีที่แน่นอนไปยังโมฆะโมฆะโมฆะสาธารณะโฟลเดอร์ใหม่ (String oldPath, String newPath) {ลอง {// ถ้าโฟลเดอร์ไม่มีอยู่ให้สร้างไฟล์โฟลเดอร์ใหม่ (ใหม่) (newPath)). mkdirs (); // อ่านเนื้อหาของโฟลเดอร์ทั้งหมดไปยังอาร์เรย์สตริงไฟล์ตั้งค่าเคอร์เซอร์ I ด้านล่างและเลื่อนลงไปเพื่อเริ่มอ่านไฟล์ Array FileList = ไฟล์ใหม่ (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 = ไฟล์ใหม่ (oldpath + ไฟล์ [i]); } else {temp = ไฟล์ใหม่ (oldpath + file.Saperator + ไฟล์ [i]); } // ถ้าเคอร์เซอร์พบไฟล์ถ้า (temp.isfile ()) {fileInputStream input = new FileInputStream (TEMP); // คัดลอกและเปลี่ยนชื่อ fileOutputStream output = ใหม่ fileOutputStream (newPath + "/" + "rename_" + (temp.getName ()). toString ()); ไบต์ [] bufferArray = byte ใหม่ [1024 * 64]; int prereadlength; ในขณะที่ ((prereadLength = input.read (bufferArray))! = -1) {output.write (bufferArray, 0, preereadlength); } output.flush (); output.close (); input.close (); } // ถ้าเคอร์เซอร์พบโฟลเดอร์ถ้า (temp.isdirectory ()) {copyFolder (oldpath + "/" + ไฟล์ [i], newpath + "/" + ไฟล์ [i]); }}} catch (exception e) {system.out.println ("ข้อผิดพลาดในการคัดลอกเนื้อหาทั้งหมดโฟลเดอร์"); }} โมฆะคงที่สาธารณะ MoveFolder (String OldPath, String newPath) {// คัดลอกไฟล์ First CopyFolder (OldPath, NewPath); // ลบไฟล์ต้นฉบับเพื่อหลีกเลี่ยงความสับสน deletedir (ไฟล์ใหม่ (oldpath)); } โมฆะคงที่สาธารณะหลัก (สตริง [] args) {MoveFolder ("C:/A", "F:/B"); -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น