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

网友投稿 205 2023-07-31


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 AZwybtaUfile 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 validAZwybtaU 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程序设计有所帮助。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:java面试常见问题之Hibernate总结
下一篇:Java实现的Windows资源管理器实例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~