package com.vim.ZipFile;
import java.io.File;
import java.util.Queue;
import java.util.Stack;
import java.util.concurrent.ConcurrentLinkedQueue;
public class TraverFileList
{
public static void main(String[] args)
{
String pathname="C:/Users/lenovo/Desktop/算法";
//traver(pathname);
//traverFile(pathname);
queueTraver(pathname);
}
public static void traver(String pathname)
{
File file=new File(pathname);
if(!file.exists())
return;
else if(file.isDirectory())
{
String[] filelist=file.list();
for(int i=0; i
traver(file.getAbsolutePath()+"\"+filelist[i]);
}
else
System.out.println(pathname);
}
public static void traverFile(String pathname)
{
Stack stack=new Stack();
stack.push(pathname);
while(!stack.empty())
{
File file=new File(stack.pop());
if(!file.exists())
return;
else if(file.isDirectory())
{
String[] list=file.list();
for(int i=0; i
stack.push(file.getAbsolutePath() + "\" + list[i]);
}
else
System.out.println(file.getAbsolutePath());
}
}
public static void queueTraver(String pathname)
{
int count=0;
Queue queue=new ConcurrentLinkedQueue();
queue.add(pathname);
while(!queue.isEmpty())
{
File file=new File(queue.remove());
if(!file.exists())
return;
else if(file.isDirectory())
{
String[] list=file.list();
for(int i=0; i
queue.add(file.getAbsolutePath() + "\" + list[i]);
}
else
{
count++;
System.out.println(file.getAbsolutePath());
}
}
System.out.println("count: " + count);
}
}

本文介绍了一种使用不同数据结构(栈、队列)实现的文件系统遍历算法,包括递归遍历、栈遍历及队列遍历三种方式。通过这些方法可以有效地列出指定路径下的所有文件。

被折叠的 条评论
为什么被折叠?



