java 文件 递归_java实现递归文件列表的方法

本文实例讲述了java实现递归文件列表的方法。分享给大家供大家参考。具体如下:

FileListing.java如下:

import java.util.*;

import java.io.*;

/**

* Recursive file listing under a specified directory.

*

* @author javapractices.com

* @author Alex Wong

* @author anonymous user

*/

public final class FileListing {

/**

* Demonstrate use.

*

* @param aArgs - aArgs[0] is the full name of an existing

* directory that can be read.

*/

public static void main(String... aArgs) throws FileNotFoundException {

File startingDirectory= new File(aArgs[0]);

List files = FileListing.getFileListing(startingDirectory);

//print out all file names, in the the order of File.compareTo()

for(File file : files ){

System.out.println(file);

}

}

/**

* Recursively walk a directory tree and return a List of all

* Files found; the List is sorted using File.compareTo().

*

* @param aStartingDir is a valid directory, which can be read.

*/

static public List getFileListing(

File aStartingDir

) throws FileNotFoundException {

validateDirectory(aStartingDir);

List result = getFileListingNoSort(aStartingDir);

Collections.sort(result);

return result;

}

// PRIVATE //

static private List getFileListingNoSort(

File aStartingDir

) throws FileNotFoundException {

List result = new ArrayList();

File[] filesAndDirs = aStartingDir.listFiles();

List filesDirs = Arrays.asList(filesAndDirs);

for(File file : filesDirs) {

result.add(file); //always add, even if directory

if ( ! file.isFile() ) {

//must be a directory

//recursive call!

List deeperList = getFileListingNoSort(file);

result.addAll(deeperList);

}

}

return result;

}

/**

* Directory is valid if it exists, does not represent a file, and can be read.

*/

static private void validateDirectory (

File aDirectory

) throws FileNotFoundException {

if (aDirectory == null) {

throw new IllegalArgumentException("Directory should not be null.");

}

if (!aDirectory.exists()) {

throw new FileNotFoundException("Directory does not exist: " + aDirectory);

}

if (!aDirectory.isDirectory()) {

throw new IllegalArgumentException("Is not a directory: " + aDirectory);

}

if (!aDirectory.canRead()) {

throw new IllegalArgumentException("Directory cannot be read: " + aDirectory);

}

}

}

希望本文所述对大家的java程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值