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=0i<nodei++){
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上添加节点,可以做到和资源管理器中一样的结构。
主要应用递归算法/**
*
*/
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 = 0index <dirList.lengthindex++) {
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 = 0index <gblFoldList.size()index++) {
System.out.println(gblFoldList.get(index))
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)