vol*_*ley 71
不确定你想如何表示树?无论如何这里是一个使用递归扫描整个子树的例子.文件和目录是相同的.请注意,File.listFiles()为非目录返回null.
public static void main(String[] args) {
Collection<File> all = new ArrayList<File>();
addTree(new File("."), all);
System.out.println(all);
}
static void addTree(File file, Collection<File> all) {
File[] children = file.listFiles();
if (children != null) {
for (File child : children) {
all.add(child);
addTree(child, all);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Java 7提供了一些改进.例如,DirectoryStream一次提供一个结果 - 调用者不再需要在执行之前等待所有I/O操作完成.这允许增量GUI更新,提前取消等.
static void addTree(Path directory, Collection<Path> all)
throws IOException {
try (DirectoryStream<Path> ds = Files.newDirectoryStream(directory)) {
for (Path child : ds) {
all.add(child);
if (Files.isDirectory(child)) {
addTree(child, all);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,dreaded null返回值已被IOException替换.
Java 7还提供了一个树木漫步者:
static void addTree(Path directory, final Collection<Path> all)
throws IOException {
Files.walkFileTree(directory, new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
throws IOException {
all.add(file);
return FileVisitResult.CONTINUE;
}
});
}
Run Code Online (Sandbox Code Playgroud)
Osc*_*Ryz 21
import java.io.File;
public class Test {
public static void main( String [] args ) {
File actual = new File(".");
for( File f : actual.listFiles()){
System.out.println( f.getName() );
}
}
}
Run Code Online (Sandbox Code Playgroud)
它显示模糊的文件和文件夹.
请参阅File类中的方法以对它们进行排序或避免目录打印等.
http://java.sun.com/javase/6/docs/api/java/io/File.html
Bra*_*tte 18
查看Apache Commons FileUtils(listFiles,iterateFiles等).用于做你想做的事情和应用过滤器的便利方法.
http://commons.apache.org/io/api-1.4/org/apache/commons/io/FileUtils.html
您还可以使用FileFilter界面过滤掉您想要的内容.最好在创建实现它的匿名类时使用它:
import java.io.File;
import java.io.FileFilter;
public class ListFiles {
public File[] findDirectories(File root) {
return root.listFiles(new FileFilter() {
public boolean accept(File f) {
return f.isDirectory();
}});
}
public File[] findFiles(File root) {
return root.listFiles(new FileFilter() {
public boolean accept(File f) {
return f.isFile();
}});
}
}
Run Code Online (Sandbox Code Playgroud)