java 怎么没有只取得子文件夹的的功能呢?

来源:百度知道 编辑:UC知道 时间:2024/07/05 02:38:00
以前没发现这有什么不好,可最近因为这个有点郁闷。
我不知道是否真的没有这个功能。下面把我遇到的问题简单的说一下:

在 c:\photo 文件夹里面有几十个子文件夹,每个子文件夹里面又有几万张图片。
我在用Java取得 c:\photo下面的所有子文件夹列表时,用的是递归算法:

private void folderList(File folder){
File[] fs=sFolder.listFiles();

for(File f:fs)
{
if(f.isDirectory())
{
System.out.println(f);
folderList(f);
}
}
}

这样的话,要先读取一个文件夹里面的所有文件和子文件夹,浪费太多的时间和精力在处理文件这一块,因为我不需要取得文件列表,只要取得文件夹列表。因为一个文件夹下面只有10 - 20个子文件夹,但却有几万个文件也要同时处理去判断:if(f.isDirectory())

以前我们写VB程序的时候,就有单独的取得文件夹下面所有子文件夹的方法可调用,下面是VB程序的写法:
function bianli(path)
set fso=server.CreateObject("scripting.filesystemobject")
on error resume next
set objFolder=fso.GetFolder(path)
set objSubFolders=objFolder.Subfolders
for each objSubFolder in objSubFolders
nowpath=path + "\" + objSubFolder.name
Response.Write nowpath
set objFiles=objSubFolder.Files
for ea

import java.io.FileFilter;
......
File parent=new File(".....");
......
File[] subFolders=parent.listFiles(new FileFilter(){
public boolean accept(File item){
return item.isDirectory();
}
});
//补充,确实如此。使用过滤类来区分文件和文件夹的话,需要额外调用函数的时间。还不如自己判断速度快。这种方法只是用着结构清楚。
//据我所知现有API中没有其它方法了。

用递归是个好办法

你拿到这个文件夹.递归下不就拿下层文件夹了嘛??