我有一个根文件夹和一堆文件和文件夹。我想生成该根文件夹(和子文件夹)中的文件名列表,以及每个文件的位置。
我需要文件位置,因为我想向用户显示文件名列表,并让他在需要时打开文件。
我使用以下代码来获取文件名,但我对如何获取匹配的文件位置感到迷失。
public void listFilesForFolder(final File folder) {
for (final File fileEntry : folder.listFiles()) {
if (fileEntry.isDirectory()) {
listFilesForFolder(fileEntry);
} else {
System.out.println(fileEntry.getName());
}
}
}
final File folder = new File("/home/you/Desktop");
listFilesForFolder(folder);
此外,现在,我使用数组列表来存储文件名。任何更好的方法/结构来完成这项工作也会有所帮助。
答案 0 :(得分:1)
这就是我用的。效果很好。
import java.io.File;
public class Filewalker {
public void walk( String path ) {
File root = new File( path );
File[] list = root.listFiles();
if (list == null) return;
for ( File f : list ) {
if ( f.isDirectory() ) {
walk( f.getAbsolutePath() );
System.out.println( "Dir:" + f.getAbsoluteFile() );
}
else {
System.out.println( "File:" + f.getAbsoluteFile() );
}
}
}
public static void main(String[] args) {
Filewalker fw = new Filewalker();
fw.walk("c:\\" );
}
}
答案 1 :(得分:0)
您可以使用一些Tree数据结构。它是满足您需求的完美套件。
File是树的叶节点。文件夹是树的父级。叶子没有孩子。
答案 2 :(得分:0)
使用linkedhashmap存储名称和路径对。