Filter, FilenameFilter用法和文件排序
FileFilter和FilenameFilter这两个类的用法都很简单,都只有一个方法
FileFilter
/**
* @param pathname The abstract pathname to be tested
*/
boolean accept(File pathname)
用法示例:
import java.io.File;
import java.io.FileFilter;
public class Main {
public static void main(String[] args) {
File cwd = new File(System.getProperty("user.dir"));
File[] htmlFiles = cwd.listFiles(new HTMLFileFilter());
for (int i = 0; i < htmlFiles.length; i++) {
System.out.println(htmlFiles[i]);
}
}
}
class HTMLFileFilter implements FileFilter {
public boolean accept(File pathname) {
if (pathname.getName().endsWith(".html"))
return true;
if (pathname.getName().endsWith(".htm"))
return true;
return false;
}
}
FilenameFilter
/**
* @param dir - the directory in which the file was found.
* @param name - the name of the file.
*/
boolean accept(File dir, String name)
用法示例:
import java.io.File;
import java.io.FilenameFilter;
class ExtensionFilter implements FilenameFilter {
String ext;
public ExtensionFilter(String ext) {
this.ext = "." + ext;
}
public boolean accept(File dir, String name) {
return name.endsWith(ext);
}
}
public class Main {
public static void main(String args[]) {
String dirname = "/java";
File f1 = new File(dirname);
FilenameFilter only = new ExtensionFilter("html");
String s[] = f1.list(only);
for (int i = 0; i < s.length; i++) {
System.out.println(s[i]);
}
}
}
文件排序
排序规则:目录排在前面,按字母顺序排序文件列表
List<File> files = Arrays.asList(new File("<目录>").listFiles());
Collections.sort(files, new Comparator<File>(){
@Override
public int compare(File o1, File o2) {
if(o1.isDirectory() && o2.isFile())
return -1;
if(o1.isFile() && o2.isDirectory())
return 1;
return o1.getName().compareTo(o2.getName());
}
});
for(File f : files)
System.out.println(f.getName());
from: www.hilyb.com
分享到:
相关推荐
该接口通常与`java.io.File`类中的`list(FilenameFilter filter)`和`listFiles(FilenameFilter filter)`方法结合使用,帮助开发者根据特定条件筛选出文件列表。 #### 二、FilenameFilter接口定义 FilenameFilter...
接下来,我们可以使用`java.io.File`类的`list(FilenameFilter)`方法来遍历指定目录,并只显示符合过滤条件的文件: ```java public static void main(String[] args) { File dir = new File("D://zhang//root"); ...
* 搜索引擎:使用 FileFilter 和 FilenameFilter 来索引文件和目录。 * 数据备份:使用 FileFilter 和 FilenameFilter 来选择要备份的文件。 * 数据分析:使用 FileFilter 和 FilenameFilter 来过滤、分类数据文件。...
通过这个示例,我们可以看到,使用FilenameFilter查找出目录下指定后缀的文件非常简单和方便。 更多关于Java文件和目录操作技巧,可以查看《Java文件与目录操作技巧汇总》、《Java数据结构与算法教程》、《Java操作...
3. **文件过滤**:为了只显示文件夹和TXT文件,可以使用`java.io.File`类的`listFiles()`方法,传入一个`FileFilter`对象。这个过滤器应该检查每个文件的扩展名是否为".txt"。例如: ```java File dir = ...
在Java中,我们可以使用`java.io.File`类的`listFiles()`方法来获取指定目录下的所有文件和子目录。如果需要根据特定条件(例如文件大小、类型)进行筛选,可以使用`FileFilter`或`FilenameFilter`接口自定义过滤...
我们使用`filter()`方法筛选出以`.txt`结尾的文件,然后用`forEach()`打印出这些文件的路径。 此外,还可以使用`java.nio.file.StandardOpenOption`枚举值来控制文件的读写操作,如`READ`, `WRITE`, `APPEND`等。`...
在这个版本中,我们使用`Files.walk()`方法遍历指定目录及其所有子目录中的文件,然后用`filter()`方法过滤出以".txt"结尾的文件,最后通过`forEach()`打印出符合条件的文件名。 总结起来,无论是Java的旧版还是...
若需要筛选特定类型的文件,可以传递一个FilenameFilter实现到`listFiles(filter)`。 4. **递归搜索**: 对于深度文件搜索,通常需要使用递归。编写一个递归函数,接受一个目录作为参数,遍历其下所有子目录,直到...
在给定的标题和描述中,我们关注的是如何使用 `FilenameFilter` 来查看并列出只包含 `.java` 文件的列表。`list()` 方法是这个过程的关键,它会返回指定目录下符合过滤条件的所有文件名。 首先,我们需要了解 `...
这可以通过实现`FilenameFilter`接口或使用Java 7的`Files.find`方法来实现。 10. **性能优化**:考虑到可能处理大量文件,开发者可能会采用缓存技术,比如只加载当前视图内的文件信息,以减少内存占用和提高响应...
- `list(FilenameFilter filter)` 和 `listFiles(FilenameFilter filter)`: 根据提供的过滤器返回当前目录中符合条件的子文件或子目录。过滤器可以自定义,只返回满足特定规则的文件或目录。 `File`类提供了丰富的...
Java的`Collections.sort()`方法可以方便地对文件对象列表进行排序。 5. **目录遍历**:Java的`java.io.File`类提供了遍历目录结构的方法,如`list()`或`listFiles()`,可以递归地获取所有子文件和目录。 6. **多...
- **文件操作**: `FileLister` 类的构造函数接受一个目录路径和一个`FilenameFilter`,用于过滤显示的文件。`currentDir`变量存储当前目录,`files`数组保存目录中的文件名。`dateFormatter`用于格式化文件的日期和...
* `public String[] list(FilenameFilter filter)`: 列出文件夹下的文件和文件夹,通过过滤器 filter 进行过滤。 例如: ```java File f = new File("d:\\"); File[] files = f.listRoots(); for (File file : ...
- **使用`FilenameFilter`筛选URL文件**:`FilenameFilter`接口用于过滤文件列表,只保留扩展名为.url的文件。通过实现`FilenameFilter.accept()`方法,可以精确控制哪些文件将被处理。 ```java FilenameFilter ...
在本场景下,我们需要实现一个过滤器来过滤掉目录文件和非`.txt`文件。 首先,让我们了解一下Java中的`FileFilter`接口。`java.io.FileFilter`是Java标准库中提供的一个接口,用于对`File`对象进行过滤。我们可以...
6. **文件查询与遍历**:使用`File`类的`listFiles()`方法可以获取指定目录下的所有文件和子目录。配合过滤器(如`FilenameFilter`),可以根据文件扩展名筛选出特定类型的文件。 7. **文件操作**:Android提供了...
在这个例子中,`traverseFiles`方法接受一个目录和一个FilenameFilter,递归地遍历目录并打印出满足过滤条件的文件。 Java I/O流是用于处理数据输入和输出的核心组件。它提供了多种类型的流,如字节流、字符流、...
- FileFilter和FilenameFilter接口可定制文件筛选规则,如按扩展名、大小等条件过滤。 - 使用DirectoryStream类处理目录流,提供更灵活的迭代和过滤选项。 - BufferedReader和BufferedWriter可以高效地读写大文件...