1. มีสองวิธีในการสำรวจไฟล์ทั้งหมดในโฟลเดอร์ใน Java:
1. การเดินทางแบบเรียกซ้ำเป็นวิธีแรกที่นักพัฒนาสามารถนึกถึงได้ ข้อดีของการเดินทางแบบเรียกซ้ำได้คือ: มันค่อนข้างง่ายที่จะนำไปใช้จำนวนรหัสค่อนข้างเล็กและประสิทธิภาพการดำเนินการสูง ข้อเสียคือ: ใช้หน่วยความจำมากขึ้นและต้องใช้ฮาร์ดแวร์สูง
// traverse traverse private void getDirectory (ไฟล์ไฟล์) {ไฟล์ flist [] = file.listfiles (); if (flist == null || flist.length == 0) {return 0; } สำหรับ (ไฟล์ f: flist) {if (f.isdirectory ()) {// โฟลเดอร์ทั้งหมดจะอยู่ที่นี่ System.out.println ("dir ==>" + f.getabsolutepath ()); GetDirectory (F); } else {// ไฟล์ทั้งหมดจะอยู่ที่นี่ System.out.println ("file ==>" + f.getabsolutepath ()); -2. การเดินทางแบบไม่ซ้ำกัน Traversal แบบเรียกซ้ำนั้นเข้าใจง่าย แต่อาจไม่ใช่เรื่องง่ายที่จะคิดเกี่ยวกับมัน ฉันคิดว่าเป็นเวลานานและพบว่า Java มีสิ่งที่เชื่อมโยง ฉันรู้อย่างแท้จริงว่าสิ่งนี้ใช้เพื่อบันทึกรายการไฟล์ที่เชื่อมโยง หากนี่คือโฟลเดอร์มันจะง่ายที่จะทำ แนวคิดที่เฉพาะเจาะจงคือ: เมื่อข้ามโฟลเดอร์ถ้าเป็นโฟลเดอร์มันจะถูกเพิ่มเข้าไปใน LinkedList และหากเป็นไฟล์มันจะถูกระบุไว้ ด้วยวิธีนี้ไฟล์และโฟลเดอร์ในไดเรกทอรีจะถูกสำรวจและโฟลเดอร์ทั้งหมดจะถูกบันทึกไว้ใน L ในรายการ InkedList; ดังนั้นสิ่งที่เหลืออยู่คือการสำรวจไฟล์ใน LinkedList วิธีการสำรวจนั้นเหมือนกับการดำเนินการข้างต้น หากเป็นโฟลเดอร์มันจะถูกเพิ่มเข้าไปใน LinkedList (PS: LinkedList ระหว่างกระบวนการ Traversal จะเป็นรายการเดียวกันเสมอ) แน่นอนหลังจากแต่ละโฟลเดอร์ถูกนำออกจากรายการโฟลเดอร์จะต้องถูกลบออกจากรายการ นี่คือ linkedList.removefirst () ที่จะอ่านเพื่อให้องค์ประกอบแรกของรายการถูกอ่านและลบออกจากรายการ ด้วยวิธีนี้ตราบใดที่คุณเดินทางไปยังสถานะของ LinkedList Isemty ก็หมายความว่าการสำรวจนั้นเสร็จสมบูรณ์
// เป็นโมฆะส่วนตัวที่ไม่ได้ย้อนกลับเป็นโมฆะ GetDirectorySize (ไฟล์ไฟล์) {LinkedList list = new LinkedList (); // บันทึกรายการโฟลเดอร์ที่จะสำรวจ getOnedir (ไฟล์, รายการ); ในขณะที่ (! list.isempty ()) {tmp = (ไฟล์) list.removefirst (); // การตัดสินในสถานที่นี้ค่อนข้างซ้ำซ้อน แต่เพื่อประโยชน์ของการประกัน โดยปกติจะมีเพียงโฟลเดอร์ในรายการ // แต่กรณีพิเศษไม่ได้ถูกตัดออกตัวอย่างเช่น: เป้าหมายที่เป็นโฟลเดอร์เองกลายเป็นไฟล์หลังจากถูกผลักเข้าไปในสแต็กถ้า (tmp.isdirectory ()) {getOnedirsize (tmp, รายการ); tmp.getAbsolutepath ());}}}} // สำรวจไฟล์ในไดเรกทอรีรูทของโฟลเดอร์ส่วนตัวที่ระบุโมฆะ getOnedir (ไฟล์ไฟล์, รายการ linkedList) {// วิธีนี้จะถูกเรียกใช้สำหรับแต่ละโฟลเดอร์ file.listfiles (); sumdir += 1; ถ้า (ไฟล์ == null || files.length == 0) {return;} สำหรับ (ไฟล์ f: ไฟล์) {ถ้า (f.isdirectory ()) {list.add (f); f.getabsolutepath ());}}}2. ใช้ java เพื่อสำรวจโฟลเดอร์และรับเนื้อหาทั้งหมดในนั้น
แพ็คเกจ Demo0823; นำเข้า Java.io.file; นำเข้า Java.util.arraylist; คลาสสาธารณะ FileTest {ArrayList แบบคงที่ส่วนตัว <String> fileList = new ArrayList <String> (); void คงที่สาธารณะ (String [] args) filePath) {file root = ไฟล์ใหม่ (filePath); ไฟล์ [] files = root.listfiles (); สำหรับ (ไฟล์ไฟล์: ไฟล์) {ถ้า (file.isdirectory ()) {// ถ้าไฟล์เป็นไดเรกทอรี getFiles (file.getAbsolutepath ()); fileList.add (file.getAbsolutepath ()); system.out.println ("แสดงไดเรกทอรีย่อยทั้งหมดและไฟล์ของพวกเขาภายใต้"+filepath+"" file.getabsolutepath () subfiles ภายใต้ "+filepath+" "+file.getabsolutepath ());}}}}ภาพการทำซ้ำ:
สรุป
ด้านบนเป็นรหัสที่สมบูรณ์ของบทความนี้เกี่ยวกับไฟล์การสำรวจในโฟลเดอร์พื้นหลัง Java ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!