Java 检索具有相同扩展名的文件数

Java 检索具有相同扩展名的文件数,java,collections,deserialization,fileinputstream,file-search,Java,Collections,Deserialization,Fileinputstream,File Search,我有一个文件夹用户在里面,我有这么多的文件具有相同的扩展名。 我想查找所有用户文件名,并使用一个为filter的查询 在下面的代码中,如何检索与查询筛选器相等的所有文件 public Collection<User> findUsers(String filter) { List<User> filteredList = new ArrayList<User>(); try { FileInputStream file

我有一个文件夹用户在里面,我有这么多的文件具有相同的扩展名。 我想查找所有用户文件名,并使用一个为filter的查询

在下面的代码中,如何检索与查询筛选器相等的所有文件

  public Collection<User> findUsers(String filter) {

     List<User> filteredList = new ArrayList<User>();
     try {
        FileInputStream fileInputStream = new FileInputStream( "Path of file" );
        ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
        Object object = objectInputStream.readObject();   

        while (object.equals(filter)) {
           filteredList.add((User)object);
           object = objectInputStream.readObject();
        }
        objectInputStream.close();
      }
      catch(Exception ioEx){
             //..............   
      }
   }
   return filteredList;
}
公共集合查找器(字符串筛选器){
List filteredList=新建ArrayList();
试一试{
FileInputStream FileInputStream=新的FileInputStream(“文件路径”);
ObjectInputStream ObjectInputStream=新ObjectInputStream(fileInputStream);
Object Object=objectInputStream.readObject();
while(object.equals(过滤器)){
添加((用户)对象);
object=objectInputStream.readObject();
}
objectInputStream.close();
}
捕获(异常ioEx){
//..............   
}
}
返回过滤器列表;
}
感谢您的帮助。

步骤1: 获取文件名

File folder = new File("your/path");
File[] listOfFiles = folder.listFiles();
步骤2:在某些集合对象中存储这些名称 步骤3:遍历集合对象并找到所需的任何筛选器


现在,您的prob正在创建这样的过滤器吗?

这里有一个小片段可以帮助您:

File folder = new File("/Users/you/folder/");
File[] listOfFiles = folder.listFiles();
List<String> filteredList = new ArrayList<String>();

for (File file : listOfFiles) {
    // Be aware that folder.listFiles() give list with directories and files
    if (file.isFile()) {
        System.out.println(file.getName());

        // apply your filter. for simplicity I am equating the file names
        // name refers to input variable to method
        if(file.getName().toLowerCase().contains(name.toLowerCase())) { 
            // create user object and add it to list. 
            // Change below line with appropriate constructor params
            filteredList.add(file.getName())
        }
    }
}
File folder=新文件(“/Users/you/folder/”);
File[]listOfFiles=folder.listFiles();
List filteredList=新建ArrayList();
对于(文件:listOfFiles){
//请注意,folder.listFiles()提供包含目录和文件的列表
if(file.isFile()){
System.out.println(file.getName());
//应用你的过滤器。为简单起见,我将文件名等效
//名称指方法的输入变量
如果(file.getName().toLowerCase().contains(name.toLowerCase()){
//创建用户对象并将其添加到列表中。
//使用适当的构造函数参数更改以下行
filteredList.add(file.getName())
}
}
}

您的代码与您的问题不匹配。您正在尝试读取文件夹中的文件还是序列化流中的对象?@chrylis:是的,我正在尝试读取文件夹中的文件,并希望对其进行反序列化。这几乎很有用,但没有得到最后一行。我不确定应用程序中的用户类是什么。我已经将答案简化为只使用字符串。我已经将条件更改为检查包含逻辑而不是等于,因此它应该可以工作。是的,我可以,但首先我需要更好地解释您要如何比较,然后还要解释您的努力,您用努力尝试了什么