用户输入文件目录和文件扩展名。应用java.io.File类,列出指定目录下符合条件的文件,不区分大小写,如果文件扩展名,用户输入为空或者“**”则列出全部文件。
时间: 2024-09-10 16:10:25 浏览: 49
在Java中,你可以使用`java.io.File`类来遍历文件系统并过滤出符合特定条件的文件。假设用户已经提供了一个目录路径和一个文件扩展名(可以转换为小写来进行不区分大小写的比较),你可以按照以下步骤操作:
```java
import java.io.File;
import java.io.FilenameFilter;
public class FileFinder {
public static void main(String[] args) {
// 获取用户输入的目录和扩展名(这里简化处理,实际应用中需要从命令行或UI获取)
String directory = "/path/to/directory";
String extension = "*"; // 用户输入为空或"**"
// 转换扩展名为小写,方便不区分大小写比较
if (!extension.equals("*")) {
extension = extension.toLowerCase();
}
// 创建File对象表示目录
File dir = new File(directory);
// 创建一个自定义的FilenameFilter用于匹配文件扩展名
FilenameFilter filter = (dirName, fileName) -> {
String fileNameWithoutExtension = fileName.substring(0, fileName.lastIndexOf('.'));
String fileExtension = fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase();
return !fileExtension.isEmpty() && (extension.equals("**") || fileExtension.equals(extension));
};
// 使用FilenameFilter遍历目录及其子目录中的文件
File[] files = dir.listFiles(filter);
if (files != null) {
for (File file : files) {
System.out.println(file.getAbsolutePath());
}
} else {
System.out.println("Directory is not valid or empty.");
}
}
}
```
在这个例子中,我们创建了一个`FilenameFilter`函数,它接受目录名称和文件名称作为参数,并检查文件的扩展名是否符合用户的输入。如果用户输入的是通配符("**"),则会返回所有非隐藏的文件。
阅读全文