为了账号安全,请及时绑定邮箱和手机立即绑定

是否可以使用java中的FileNameFilter接口按大小过滤文件

是否可以使用java中的FileNameFilter接口按大小过滤文件

炎炎设计 2021-12-01 16:28:25
我知道我可以使用FileFilter界面来做我想做的事,但是我有一个练习,它以某种方式要求我使用FileNameFilter实现按大小过滤文件。我这里有一个简单的代码,我提供了一个目录,该代码应该在技术上过滤该目录中的文件,并且只提供以“.exe”结尾且具有特定大小的文件。但是我无法使用大小过滤器,FileNameFilter因为它会检查我发送的目录的大小,而不是其中的文件。我的 FileNameFilter 实现:import java.io.File;import java.io.FilenameFilter;public class MyFileFilter implements FilenameFilter {    private String x;    private int size;    public MyFileFilter(String x, int size){        this.x = x;        this.size = size;    }    @Override    public boolean accept(File dir, String name) {        //i can't use the dir.length because it checks the size of the directory and not the inside files        return name.endsWith(x); // && dir.length() == size;    }}和主要:File f = new File("C:\\Users\\Emucef\\Downloads\\Programs");MyFileFilter mff = new MyFileFilter(".exe", 9142656);File[] list = f.listFiles(mff);所以基本上问题是:有没有办法使用按大小过滤文件FileNameFilter,如果是这样,如何?
查看完整描述

3 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

尝试这个:


@Override

public boolean accept(File dir, String name) {

    File file = new File(dir, name);

    return name.endsWith(x) && file.length() == size;

}


查看完整回答
反对 回复 2021-12-01
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

@Override

    public boolean accept(File dir, String name) {

        //i can't use the dir.length because it checks the size of the directory and not the inside files

        if(name.endsWith(x))

        {

            File f = new File(dir.getPath(), name);

            return f.length() == size;

        }

        return false;

    }


查看完整回答
反对 回复 2021-12-01
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

使用 FileFiler 而不是 FilenameFilter 更适合您打算实现的目标。您的过滤器类将如下所示:


import java.io.File;

import java.io.FileFilter;


public class MyFileFilter implements FileFilter {

    private String x;

    private int size;


    public MyFileFilter(String x, int size){

        this.x = x;

        this.size = size;

    }


    @Override

    public boolean accept(File file) {

        return file.endsWith(x) && file.length() == size;

    }

}


查看完整回答
反对 回复 2021-12-01
  • 3 回答
  • 0 关注
  • 184 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信