public void traverseFolder2(String path) {
File file = new File(path);    
if (file.exists()) {
File[] files = file.listFiles();
if (null == files || files.length == 0) {
System.out.println("文件夾是空的!");
return;
} else {
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夾:" + file2.getAbsolutePath());
traverseFolder2(file2.getAbsolutePath());
} else {
System.out.println("文件:" + file2.getAbsolutePath());
}
}
}
} else {
System.out.println("文件不存在!");
}
}

(1)java遍歷本地文件夾擴展閱讀
public void traverseFolder1(String path) {
int fileNum = 0, folderNum = 0;
File file = new File(path);
if (file.exists()) {
LinkedList<File> list = new LinkedList<File>();
File[] files = file.listFiles();
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夾:" + file2.getAbsolutePath());
list.add(file2);
foldeNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
fileNum++;
}
}
File temp_file;
while (!list.isEmpty()) {
temp_file = list.removeFirst();
files = temp_file.listFiles();        
for (File file2 : files) {
if (file2.isDirectory()) {
System.out.println("文件夾:" + file2.getAbsolutePath());
list.add(file2);
folderNum++;
} else {
System.out.println("文件:" + file2.getAbsolutePath());
fileNum++;
}
}
}
} else {
System.out.println("文件不存在!");
}
System.out.println("文件夾共有:" + folderNum + ",文件共有:" + fileNum);
}
『貳』 java 怎麼遍歷 文件夾下的 文件
A.不使用遞歸: 
import java.io.File; 
import java.util.LinkedList; 
public class FileSystem { 
public static void main(String[] args) { 
long a = System.currentTimeMillis(); 
LinkedList list = new LinkedList(); 
File dir = new File("c:\\java\\"); 
File file[] = dir.listFiles(); 
for (int i = 0; i < file.length; i++) { 
if (file[i].isDirectory()) 
list.add(file[i]); 
else 
System.out.println(file[i].getAbsolutePath()); 
} 
File tmp; 
while (!list.isEmpty()) { 
tmp = list.removeFirst(); 
if (tmp.isDirectory()) { 
file = tmp.listFiles(); 
if (file == null) 
continue; 
for (int i = 0; i < file.length; i++) { 
if (file[i].isDirectory()) 
list.add(file[i]); 
else 
System.out.println(file[i].getAbsolutePath()); 
} 
} else { 
System.out.println(tmp.getAbsolutePath()); 
} 
} 
System.out.println(System.currentTimeMillis() - a); 
} 
} 
『叄』 java遍歷文件夾
主要應用遞歸演算法
/**
 * 
 */
package com.dianziermu.io;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
 * 遍歷文件夾及其下面的所有文件夾,遞歸
 * 
 * @author 點子二木
 * @date 2009-6-10
 * @version 1.0
 */
@SuppressWarnings("unchecked")
public class FolderIO {
 static List<File> gblFoldList = new ArrayList();
 /**
  * @param args
  */
 public static void main(String[] args) {
  String path = "c:\\Program Files";// 將要搜索目錄路徑
  System.out.println("獲取"+path + "目錄下所有文件夾,正在載入......");
  readFolder(path);
  printFolder();
 }
 /**
  * 獲取文件對象
  * 
  * @param path
  */
 private static void readFolder(String path) {
  File dir = new File(path);// 建立代表Sub目錄的File對象,並得到它的一個引用
  if (dir.exists()) {// 檢查目錄是否存在
   File[] dirList = dir.listFiles();// 獲取該目錄下所有文件和文件夾
   for (int index = 0; index < dirList.length; index++) {
    if (dirList[index].isDirectory()) {// 如果是文件夾
     // System.out.println(dirList[index]);
     gblFoldList.add(dirList[index]);
     readFolder(dirList[index].getPath());// 注意:此處遞歸
    }
   }
  } else {
   System.out.println("該文件夾不存在");
  }
 }
 /**
  * 列印文件夾對象
  */
 private static void printFolder() {
  for (int index = 0; index < gblFoldList.size(); index++) {
   System.out.println(gblFoldList.get(index));
  }
 }
}
『肆』 java遍歷指定文件夾下的所有子文件夾怎麼操作
import java.io.File ;
import java.io.IOException ;
public class FileDemo11{
public static void main(String args[]){
File my = new File("d:" + File.separator) ;// 操作路徑,可以有外部參數決定的
print(my) ;
}
public static void print(File file){// 遞歸調用
if(file!=null){// 判斷對象是否為空專
if(file.isDirectory()){// 如果是目錄屬
File f[] = file.listFiles() ;// 列出全部的文件
if(f!=null){// 判斷此目錄能否列出
for(int i=0;i<f.length;i++){
print(f[i]) ;// 因為給的路徑有可能是目錄,所以,繼續判斷
}
}
}else{
System.out.println(file) ;// 輸出路徑
}
}
}
};
『伍』 java 遞歸遍歷文件夾
在main方法中填寫要遍歷的文件夾,就可以刪除文件夾中的文件名以bmp和jpg結尾的文件。這個方法使用了遞歸思想
import java.io.*;
class FileTest
{
     public static int cc=0;
    public static void Sereach(File f)
    {
        if(f.isFile())
        {
            String str=f.getName().substring(f.getName().length()-4);
            
            if(str.equals(".bmp")||str.equals(".jpg")||str.equals(".BMP")||str.equals(".JPG"))
                {
                f.delete();
                System.out.println("刪除"+f.getName());
                cc++;
                }
        }
        if(f.isDirectory())
            {
            File []ss=f.listFiles();
            for(int i=0;i<ss.length;i++)
            {
                Sereach(ss[i]);
            }
            }
    }
    public static void main(String []args) throws Exception
    {
        
        File f=new File("D:\\picture");
        
        Sereach(f);
        System.out.println("一共刪除了"+cc+"張bmp或jpg格式的圖片");
}
}
『陸』 在java中如何遍歷某個路徑下的所有文件夾和文件
首先,我們先來遍歷一下D盤根目錄下所有的子文件:public
static
void
fileList()
{
File
file=new
File("d:/");
File[]
files
=
file.listFiles();
if
(files
!=
null)
{
for
(File
f
:
files)
{
System.out.println(f.getPath());
}
}
}對此,我們肯定不滿足,我們需要遍歷D盤下所有的文件和文件夾,而不是根目錄下的文件夾,這個時候我們需要使用到遞歸:public
static
void
fileList(File
file)
{
File[]
files
=
file.listFiles();
if
(files
!=
null)
{
for
(File
f
:
files)
{
System.out.println(f.getPath());
fileList(f);
}
}
}然後在主函數中調用:public
static
void
main(String[]
args)
{
File
file=new
File("d:/");
fileList(file);
}結果是不是能令你滿意呢?顯然,輸出的都是全路徑,我們可以對我們的遞歸函數做如下改進:
public
static
void
fileList(File
file,int
node)
{
node++;
File[]
files
=
file.listFiles();
if
(files
!=
null)
{
for
(File
f
:
files)
{
for(int
i=0;i<node;i++){
if(i==node-1){
System.out.print("├");
}
else{
System.out.print("
");
}
}
System.out.println(f.getName());
fileList(f,node);
}
}
}然後再次在主函數中調用:public
static
void
main(String[]
args)
{
File
file=new
File("d:/");
fileList(file,0);
}得到的結果是一個類似樹狀的結構,如果你對此還不滿意,可以嘗試給JTree上添加節點,可以做到和資源管理器中一樣的結構。
『柒』 java怎麼遍歷一個盤下的所有文件
用遞歸演算法,遞歸可以理解成自己調用自己,但要有終止條件
首先是判斷這個是文件還是文件夾。文件的話就處理文件;文件夾的話,列出裡面的文件,再對每一個文件做同樣的判斷處理
下面是刪除一個文件夾(改成列出所有文件的話,你把刪除操作改成放入集合操作),所有刪除都是只能刪除一個文件或者是空文件夾,所以遇到文件夾就得把裡面的文件全部刪除
	privatestaticvoiddeleteFile(Filefile){
		if(!file.exists())
			return;
		System.out.print("刪除===");
		if(file.isFile()){
			System.out.println("文件:"+file);
			file.delete();
		}else{
			System.out.println("文件夾:"+file);
			for(Filef:file.listFiles()){
				deleteFile(f);
			}
			file.delete();
		}
	}同理(Node是自己定義的類,主要包含了name(String),children (List<Node>)這兩個屬性來表達層級):
遍歷了這個文件夾之後返回這個文件夾的Node作為上一個文件加的children之一,這就把文件夾的層級結構列出來了,當然你也可以用Map來存儲這些數據
/**
*列出文件目錄結構
*
*@paramfolder
*@paramfnf
*@return
*/
privatestaticNodelsFiles(Filefolder){
Noden=newNode();
n.setName(folder.getName());
n.setPath(folder.getAbsolutePath());
if(folder.isFile()){
n.setLeaf(true);
n.setSize(folder.length());
}else{
n.setLeaf(false);
File[]folders=folder.listFiles();//列出文件夾底下的文件
for(Filefile:folders){//遍歷每個文件做相同操作
Nodecn=lsFiles(file);
n.getChildren().add(cn);
n.setSize(n.getSize()+cn.getSize());
}
}
returnn;
}
下面是不分層次結構來列出所有文件(純手寫,可能有語法錯誤)
/**
*列出文件路徑
*
*@paramfolder
*@paramfnf
*@return
*/
privatestaticList<String>lsFiles(Filefolder){
List<String>l=newArrayList<String>();
l.add(folder.getAbsolutePath());
if(folder.isFile()){
//處理file
}else{
File[]folders=folder.listFiles();
for(Filefile:folders){
l.addAll(lsFiles(file));
}
}
returnl;
}
效果