Java 检索具有相同扩展名的文件数
我有一个文件夹用户在里面,我有这么多的文件具有相同的扩展名。 我想查找所有用户文件名,并使用一个为filter的查询 在下面的代码中,如何检索与查询筛选器相等的所有文件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
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:是的,我正在尝试读取文件夹中的文件,并希望对其进行反序列化。这几乎很有用,但没有得到最后一行。我不确定应用程序中的用户类是什么。我已经将答案简化为只使用字符串。我已经将条件更改为检查包含逻辑而不是等于,因此它应该可以工作。是的,我可以,但首先我需要更好地解释您要如何比较,然后还要解释您的努力,您用努力尝试了什么