我有一个文件对象列表,我想根据类型(音频、视频、照片)或捕获日期/时间或 Exif 信息(如果是照片)等规则进行过滤。例如,我可以用一些 cicles 来做到这一点。
有聪明的方法吗?我在某处读到解决方案可能是使用 Google Guava 的谓词,但我不明白它是如何工作的。有什么建议吗?谢谢
我有一个文件对象列表,我想根据类型(音频、视频、照片)或捕获日期/时间或 Exif 信息(如果是照片)等规则进行过滤。例如,我可以用一些 cicles 来做到这一点。
有聪明的方法吗?我在某处读到解决方案可能是使用 Google Guava 的谓词,但我不明白它是如何工作的。有什么建议吗?谢谢
使用 Guava Predicates 你会做一些事情
import java.io.File;
import java.util.Collection;
import java.util.List;
import javax.annotation.Nullable;
import com.google.common.base.Predicate;
import com.google.common.collect.Collections2;
import com.google.common.io.Files;
public class FileFiltering {
public static void main(String[] args) {
List<File> files = getFiles();
Collection<File> audioFiles = Collections2.filter(files,
new AudioPredicate());
Collection<File> videoFiles = Collections2.filter(files,
new VideoPredicate());
}
private static List<File> getFiles() {
// TODO Auto-generated method stub
return null;
}
}
class AudioPredicate implements Predicate<File> {
@Override
public boolean apply(@Nullable File file) {
return Files.getFileExtension(file.getName()).equalsIgnoreCase("mp3");
}
}
class VideoPredicate implements Predicate<File> {
@Override
public boolean apply(@Nullable File file) {
return Files.getFileExtension(file.getName()).equalsIgnoreCase("mkv");
}
}
在应用方法中,您需要编写代码,为您想要的文件类型返回 true。