java实现遍历某个目录(包括子目录)下的所有文件
在java中遍历一个文件夹里边的所有文件,可以有两种方式:
一、递归遍历
通常也是开发者第一时间能想到的方法。
递归遍历的优点是:
实现起来相对简单,代码量相对较少,执行效率较高。
缺点是:
比较吃内存,对硬件要求较高。
在线视频教程分享:java在线视频
具体算法如下:
// 递归遍历 private void getDirectory(File file) { File flist[] = file.listFiles(); if (flist == null || flist.length == 0) { return 0; } for (File f : flist) { if (f.isDirectory()) { //这里将列出所有的文件夹 System.out.println("Dir==>" + f.getAbsolutePath()); getDirectory(f); } else { //这里将列出所有的文件 System.out.println("file==>" + f.getAbsolutePath()); } } }
二、非递归遍历
具体思路:
遍历一个文件夹的时候,如果是文件夹,就添加到linkedlist里去,如果是文件则列出。这样该目录的文件和文件夹就遍历完毕了,文件夹全部被保存到linkedlist里,所以剩下的就是遍历linkedlist里边的文件夹的文件,遍历方式同上边的操作一致。
如果是文件夹就添加到linkedlist里边,当然每次从列表取出一个文件夹之后需要从列表中删除该文件夹,这里采用linkedlist.removeFirst()
来读取,这样是每次读取列表的第一个元素并将其从列表剔除。这样只要遍历到linkedlist的状态是isEmty的时候就说明遍历完毕了。
具体算法如下:
/** * 非递归遍历 * @param file * @return */ public static LinkedList<File> GetDirectory(String path) { File file = new File(path); LinkedList<File> Dirlist = new LinkedList<File>(); // 保存待遍历文件夹的列表 LinkedList<File> fileList = new LinkedList<File>(); GetOneDir(file, Dirlist, fileList);// 调用遍历文件夹根目录文件的方法 File tmp; while (!Dirlist.isEmpty()) { tmp = (File) Dirlist.removeFirst(); // 从文件夹列表中删除第一个文件夹,并返回该文件夹赋给tmp变量 // 遍历这个文件夹下的所有文件,并把 GetOneDir(tmp, Dirlist, fileList); } return fileList; } // 遍历指定文件夹根目录下的文件 private static void GetOneDir(File file, LinkedList<File> Dirlist, LinkedList<File> fileList) { // 每个文件夹遍历都会调用该方法 File[] files = file.listFiles(); if (files == null || files.length == 0) { return; } for (File f : files) { if (f.isDirectory()) { Dirlist.add(f); } else { // 这里列出当前文件夹根目录下的所有文件,并添加到fileList列表中 fileList.add(f); // System.out.println("file==>" + f); } } }
相关文章教程推荐:java入门教程
Atas ialah kandungan terperinci java实现遍历某个目录(包括子目录)下的所有文件. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Panduan untuk Square Root di Java. Di sini kita membincangkan cara Square Root berfungsi di Java dengan contoh dan pelaksanaan kodnya masing-masing.

Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Panduan untuk Penjana Nombor Rawak di Jawa. Di sini kita membincangkan Fungsi dalam Java dengan contoh dan dua Penjana berbeza dengan contoh lain.

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Panduan untuk Nombor Armstrong di Jawa. Di sini kita membincangkan pengenalan kepada nombor Armstrong di java bersama-sama dengan beberapa kod.

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah
