1. Ada dua cara untuk melintasi semua file dalam folder di Java:
1. Traversal rekursif biasanya merupakan metode pertama yang dapat dipikirkan pengembang. Keuntungan dari traversal rekursif adalah: relatif mudah diimplementasikan, jumlah kode relatif kecil, dan efisiensi eksekusi tinggi. Kerugiannya adalah: ia mengkonsumsi lebih banyak memori dan membutuhkan perangkat keras yang tinggi.
// secara rekursif melintasi private void getDirectory (file file) {file flist [] = file.listFiles (); if (flist == null || flist.length == 0) {return 0; } untuk (file f: flist) {if (f.isdirectory ()) {// Semua folder akan terdaftar di sini System.out.println ("dir ==>" + f.getAbsolutePath ()); getDirectory (f); } else {// Semua file akan terdaftar di sini System.out.println ("File ==>" + f.getAbsolutePath ()); }}}2. Traversal non-rekursif. Traversal rekursif mudah dimengerti, tetapi mungkin tidak mudah untuk memikirkannya. Saya berpikir untuk waktu yang lama dan menemukan bahwa Java memiliki daftar tautan. Saya benar -benar tahu bahwa ini digunakan untuk menyimpan daftar file tertaut. Jika ini adalah folder, itu akan mudah dilakukan. Gagasan spesifiknya adalah: saat melintasi folder, jika itu adalah folder, itu akan ditambahkan ke LinkedList, dan jika itu adalah file, itu akan terdaftar; Dengan cara ini, file dan folder di direktori dilalui, dan semua folder disimpan ke L dalam daftar inked; Jadi yang tersisa adalah melintasi file di LinkedList. Metode traversal sama dengan operasi di atas. Jika itu adalah folder, ditambahkan ke LinkedList (PS: LinkedList selama proses traversal selalu menjadi daftar yang sama). Tentu saja, setelah setiap folder diambil dari daftar, folder perlu dihapus dari daftar. Berikut ini adalah linkedlist.removefirst () untuk dibaca, sehingga elemen pertama dari daftar dibaca dan dihapus dari daftar. Dengan cara ini, selama Anda melintasi keadaan LinkedList Isemty, itu berarti bahwa traversal telah selesai.
// Traversal Private Void GetDirectorySize (File File) {LinkedList List = new LinkedList () baru (); // Simpan daftar folder yang akan dilalui getOnedir (file, daftar); // Panggil metode untuk melintasi file direktori root file TMP; while (! list.isempty ()) {tmp = (file) list.removefirst (); // penilaian di tempat ini agak berlebihan, tetapi demi asuransi, itu masih merupakan penilaian. Biasanya, hanya ada folder dalam daftar // tetapi kasus khusus tidak dikesampingkan, misalnya: target yang merupakan folder itu sendiri menjadi file setelah didorong ke dalam tumpukan if (tmp.isdirectory ()) {getOnedIrsize (tmp, daftar);} else {System.out.println ("file ==>" + " +); tmp.getAbsolutePath ());}}}} // melintasi file dalam direktori root dari folder private void getOneDir (file linkedList) {// metode ini akan dipanggil untuk setiap folder traversal systems.out.println ("dir ==>" + f.getabsol Systemsal) ("dir ==>" + f.getabsoleBsol Systemsal) ("dir ==>" + f.getabsoleBsol Systemsal) ("dir ==>" + f.getabsol file.listFiles (); sumdir += 1; if (file == null || file f.getAbsolutePath ());}}}2. Gunakan java untuk melintasi folder dan mendapatkan semua isinya di dalamnya
Paket demo0823; impor java.io.file; import java.util.arraylist; kelas publik filetest {private static arraylist <string> filelist = new arraylist <string> (); public static main (string [] args) {string filePath = "g: // uji // icon (string [] args) {string filePath =" g: // uji // icon "; FilePath) {file root = File baru (FilePath); file [] file = root.listFiles (); untuk (file file: file) {if (file.isdirectory ()) {// Jika file adalah direktori, hubungi kabinet lantai // rekursif dengan rekursif secara rekursif secara rekursif secara rekursif secara rekursif secara rekursif getFiles (file.getAbsolutePath ()); fileList.add (file.getAbsolutePath ()); System.out.println ("Tampilkan semua subdirektori dan file mereka di bawah"+FilePath+"" SUBSEBSOLUTOLES (); di bawah "+filepath+" "+file.getAbsolutePath ());}}}}Gambar reproduksi:
Meringkaskan
Di atas adalah kode lengkap dari artikel ini tentang melintasi file di folder latar belakang Java. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!