`
adoph
  • 浏览: 5375 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Filter, FilenameFilter用法和文件排序

 
阅读更多
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

分享到:
评论

相关推荐

    FilenameFilter的用法

    该接口通常与`java.io.File`类中的`list(FilenameFilter filter)`和`listFiles(FilenameFilter filter)`方法结合使用,帮助开发者根据特定条件筛选出文件列表。 #### 二、FilenameFilter接口定义 FilenameFilter...

    小程序------FilenameFilter 接口 过滤指定类型的文件

    接下来,我们可以使用`java.io.File`类的`list(FilenameFilter)`方法来遍历指定目录,并只显示符合过滤条件的文件: ```java public static void main(String[] args) { File dir = new File("D://zhang//root"); ...

    java核心编程之文件过滤类FileFilter和FilenameFilter

    * 搜索引擎:使用 FileFilter 和 FilenameFilter 来索引文件和目录。 * 数据备份:使用 FileFilter 和 FilenameFilter 来选择要备份的文件。 * 数据分析:使用 FileFilter 和 FilenameFilter 来过滤、分类数据文件。...

    Java使用FilenameFilter查找出目录下指定后缀的文件示例

    通过这个示例,我们可以看到,使用FilenameFilter查找出目录下指定后缀的文件非常简单和方便。 更多关于Java文件和目录操作技巧,可以查看《Java文件与目录操作技巧汇总》、《Java数据结构与算法教程》、《Java操作...

    文件浏览 打开sdcard文件夹。只显示文件夹和txt文件。过滤非txt文件。选择txt文件返回其名字。

    3. **文件过滤**:为了只显示文件夹和TXT文件,可以使用`java.io.File`类的`listFiles()`方法,传入一个`FileFilter`对象。这个过滤器应该检查每个文件的扩展名是否为".txt"。例如: ```java File dir = ...

    通过搜索文件按照指定文件数量或大小切割文件、合并文件

    在Java中,我们可以使用`java.io.File`类的`listFiles()`方法来获取指定目录下的所有文件和子目录。如果需要根据特定条件(例如文件大小、类型)进行筛选,可以使用`FileFilter`或`FilenameFilter`接口自定义过滤...

    用java筛选目录和文件

    我们使用`filter()`方法筛选出以`.txt`结尾的文件,然后用`forEach()`打印出这些文件的路径。 此外,还可以使用`java.nio.file.StandardOpenOption`枚举值来控制文件的读写操作,如`READ`, `WRITE`, `APPEND`等。`...

    根据后缀名获取文件列表

    在这个版本中,我们使用`Files.walk()`方法遍历指定目录及其所有子目录中的文件,然后用`filter()`方法过滤出以".txt"结尾的文件,最后通过`forEach()`打印出符合条件的文件名。 总结起来,无论是Java的旧版还是...

    SD Card文件搜索

    若需要筛选特定类型的文件,可以传递一个FilenameFilter实现到`listFiles(filter)`。 4. **递归搜索**: 对于深度文件搜索,通常需要使用递归。编写一个递归函数,接受一个目录作为参数,遍历其下所有子目录,直到...

    FilenameFileter list 查看 java文件列表(过滤 java文件)

    在给定的标题和描述中,我们关注的是如何使用 `FilenameFilter` 来查看并列出只包含 `.java` 文件的列表。`list()` 方法是这个过程的关键,它会返回指定目录下符合过滤条件的所有文件名。 首先,我们需要了解 `...

    java 文件管理器

    这可以通过实现`FilenameFilter`接口或使用Java 7的`Files.find`方法来实现。 10. **性能优化**:考虑到可能处理大量文件,开发者可能会采用缓存技术,比如只加载当前视图内的文件信息,以减少内存占用和提高响应...

    后端Java部分知识----文件地址----File类

    - `list(FilenameFilter filter)` 和 `listFiles(FilenameFilter filter)`: 根据提供的过滤器返回当前目录中符合条件的子文件或子目录。过滤器可以自定义,只返回满足特定规则的文件或目录。 `File`类提供了丰富的...

    Java文件管理系统.zip

    Java的`Collections.sort()`方法可以方便地对文件对象列表进行排序。 5. **目录遍历**:Java的`java.io.File`类提供了遍历目录结构的方法,如`list()`或`listFiles()`,可以递归地获取所有子文件和目录。 6. **多...

    JAVA文件编码转换和实现目录与文件打开

    - **文件操作**: `FileLister` 类的构造函数接受一个目录路径和一个`FilenameFilter`,用于过滤显示的文件。`currentDir`变量存储当前目录,`files`数组保存目录中的文件名。`dateFormatter`用于格式化文件的日期和...

    java中File类的使用方法 File类的

    * `public String[] list(FilenameFilter filter)`: 列出文件夹下的文件和文件夹,通过过滤器 filter 进行过滤。 例如: ```java File f = new File("d:\\"); File[] files = f.listRoots(); for (File file : ...

    用Java输出HTML文件

    - **使用`FilenameFilter`筛选URL文件**:`FilenameFilter`接口用于过滤文件列表,只保留扩展名为.url的文件。通过实现`FilenameFilter.accept()`方法,可以精确控制哪些文件将被处理。 ```java FilenameFilter ...

    java中如何使用过滤器过滤指定格式的文件

    在本场景下,我们需要实现一个过滤器来过滤掉目录文件和非`.txt`文件。 首先,让我们了解一下Java中的`FileFilter`接口。`java.io.FileFilter`是Java标准库中提供的一个接口,用于对`File`对象进行过滤。我们可以...

    android 文件分类

    6. **文件查询与遍历**:使用`File`类的`listFiles()`方法可以获取指定目录下的所有文件和子目录。配合过滤器(如`FilenameFilter`),可以根据文件扩展名筛选出特定类型的文件。 7. **文件操作**:Android提供了...

    Java文件File的使用及I/O的使用

    在这个例子中,`traverseFiles`方法接受一个目录和一个FilenameFilter,递归地遍历目录并打印出满足过滤条件的文件。 Java I/O流是用于处理数据输入和输出的核心组件。它提供了多种类型的流,如字节流、字符流、...

    android 快速的搜索手机文件引擎 java I/O的应用

    - FileFilter和FilenameFilter接口可定制文件筛选规则,如按扩展名、大小等条件过滤。 - 使用DirectoryStream类处理目录流,提供更灵活的迭代和过滤选项。 - BufferedReader和BufferedWriter可以高效地读写大文件...

Global site tag (gtag.js) - Google Analytics