gpt4 book ai didi

java - 从目录中读取文件并从 Java 中过滤文件

转载 作者:行者123 更新时间:2023-11-30 06:37:50 25 4
gpt4 key购买 nike

以下代码遍历所有目录和子目录,只输出 .java 文件;

import java.io.File;


public class DirectoryReader {
private static String extension = "none";
private static String fileName;

public static void main(String[] args ){
String dir = "C:/tmp";
File aFile = new File(dir);
ReadDirectory(aFile);
}
private static void ReadDirectory(File aFile) {
File[] listOfFiles = aFile.listFiles();
if (aFile.isDirectory()) {
listOfFiles = aFile.listFiles();
if(listOfFiles!=null) {
for(int i=0; i < listOfFiles.length; i++ ) {
if (listOfFiles[i].isFile()) {

fileName = listOfFiles[i].toString();
int dotPos = fileName.lastIndexOf(".");
if (dotPos > 0) {
extension = fileName.substring(dotPos);
}
if (extension.equals(".java")) {
System.out.println("FILE:" + listOfFiles[i] );
}
}
if(listOfFiles[i].isDirectory()) {
ReadDirectory(listOfFiles[i]);
}
}
}
}
}


}

这样有效率吗?如何提高速度?

欢迎所有想法。

最佳答案

在 Java 7 中,我会考虑这样的事情:

Files.walkFileTree(aFile.toPath(), new SimpleFileVisitor<Path>()
{
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
{
if(file.getFileName().endsWith(".java")
{
System.out.println("FILE:" + file );
}
return FileVisitResult.CONTINUE;
}
});

这可能不会更快,但我发现它更具可读性。

编辑:我删除了当前的 Java 示例。 listFiles 不是递归的,因此您可以使用它,但您必须使用自己的递归。您还需要两个 listFiles 调用(用于 Java 文件和目录),或者您需要一个匹配两者的 FileFilter。在后一种情况下,您必须检查返回数组中的每个文件以查看它是哪个文件。

关于java - 从目录中读取文件并从 Java 中过滤文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3013110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com