根据android中的创建日期对文件进行排序
我想要基于我的创建日期的文件列表。 当我更新任何if图像并尝试检索所有图像时,顺序会随机更改 这是我的密码根据android中的创建日期对文件进行排序,android,file,Android,File,我想要基于我的创建日期的文件列表。 当我更新任何if图像并尝试检索所有图像时,顺序会随机更改 这是我的密码 File[] files = parentDir.listFiles(); for (File file : files) { // I am getting files here } 有什么帮助吗?试试这个可能对你有帮助 public static void main(String[] args) throws IOException { File direc
File[] files = parentDir.listFiles();
for (File file : files) {
// I am getting files here
}
有什么帮助吗?试试这个可能对你有帮助
public static void main(String[] args) throws IOException {
File directory = new File(".");
// get just files, not directories
File[] files = directory.listFiles((FileFilter) FileFileFilter.FILE);
System.out.println("Default order");
displayFiles(files);
Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_COMPARATOR);
System.out.println("\nLast Modified Ascending Order (LASTMODIFIED_COMPARATOR)");
displayFiles(files);
Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_REVERSE);
System.out.println("\nLast Modified Descending Order (LASTMODIFIED_REVERSE)");
displayFiles(files);
}
public static void displayFiles(File[] files) {
for (File file : files) {
System.out.printf("File: %-20s Last Modified:" + new Date(file.lastModified()) + "\n", file.getName());
}
}
List fileList=new ArrayList();
Collections.sort(fileList,newcomparator(){
@凌驾
公共int比较(文件file1、文件file2){
长k=file1.lastModified()-file2.lastModified();
如果(k>0){
返回1;
}else如果(k==0){
返回0;
}否则{
返回-1;
}
}
});
我想要基于我的创建日期的文件列表
正如前面两个答案所指出的,您可以根据修改日期对文件进行排序:
file.lastModified()
但修改日期会更新,例如在重命名文件的瞬间。因此,这不适用于表示创建日期
不幸的是,创建日期不可用,因此您需要重新考虑您的基本策略:
以下是根据修改日期对文件进行排序的代码,因为创建日期不可用
File[] files = parentDir.listFiles();
Arrays.sort(files, new Comparator() {
public int compare(Object o1, Object o2) {
if (((File)o1).lastModified() > ((File)o2).lastModified()) {
return -1;
} else if (((File)o1).lastModified() < ((File)o2).lastModified()) {
return +1;
} else {
return 0;
}
}
});
File[]files=parentDir.listFiles();
Arrays.sort(文件,新的Comparator(){
公共整数比较(对象o1、对象o2){
如果(((文件)o1.lastModified()>((文件)o2.lastModified()){
返回-1;
}else if(((文件)o1.lastModified()<((文件)o2.lastModified()){
返回+1;
}否则{
返回0;
}
}
});
在Kotlin语言中,可以这样编写:
private fun getListFiles(parentDir: File): MutableList<File> {
val inFiles: MutableList<File> = parentDir.listFiles().toMutableList()
inFiles.filter { it.extension == "jpg" }
inFiles.sortByDescending({ it.lastModified()})
return inFiles
}
private fun getListFiles(parentDir:File):可变列表{
val inFiles:MutableList=parentDir.listFiles().toMutableList()
inFiles.filter{it.extension==“jpg”}
inFiles.sortByDescending({it.lastModified()})
返回填充
}
伙计们,如果您无法解决此LastModifiedFileComparator
问题,以下是我找到的解决方案
步骤1打开应用程序级别
build.gradle
并添加依赖项,如下所示。要获取更新版本,请单击
步骤2如果它不起作用,则在应用程序级别
build.gradle中添加mavenCentral()
创建新的存储库
repositories{
mavenCentral()
}
dependencies {
//all implementation
所有这些都应该像魅力一样工作,如果没有,请参阅此处。将此添加到build.gradle:
implementation group: 'commons-io', name: 'commons-io', version: '2.4'
2.向活动添加代码:
File[] folderFiles = Files.listFiles();
// Sort files in ascending order base on last modification
Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_COMPARATOR);
// Sort files in descending order base on last modification
Arrays.sort(folderFiles, LastModifiedFileComparator.LASTMODIFIED_REVERSE);
按更改日期对文件数组进行排序的一种快速而优雅的方法是:
Arrays.sort(fileList, new Comparator<File>() {
@Override
public int compare(File f1, File f2) {
return Long.compare(f1.lastModified(), f2.lastModified());
// For descending
// return -Long.compare(f1.lastModified(), f2.lastModified());
}
});
Arrays.sort(文件列表,新的比较器(){
@凌驾
公共整数比较(文件f1、文件f2){
返回Long.compare(f1.lastModified(),f2.lastModified());
//下降
//return-Long.compare(f1.lastModified(),f2.lastModified());
}
});
要对文件数组进行排序,按名称是:
Arrays.sort(fileList, new Comparator<File>() {
@Override
public int compare(File f1, File f2) {
return f1.compareTo(f2);
// For descending
// return -f1.compareTo(f2);
}
});
Arrays.sort(文件列表,新的比较器(){
@凌驾
公共整数比较(文件f1、文件f2){
返回f1.compareTo(f2);
//下降
//返回-f1。与(f2)比较;
}
});
我已尝试过此代码。我尝试过重命名图像,在这种情况下,我再次失去了我原来的顺序。最新重命名的图像排在最后。注意,LastModifiedFileComparator
在Apache的公共IO中可用。
Arrays.sort(fileList, new Comparator<File>() {
@Override
public int compare(File f1, File f2) {
return Long.compare(f1.lastModified(), f2.lastModified());
// For descending
// return -Long.compare(f1.lastModified(), f2.lastModified());
}
});
Arrays.sort(fileList, new Comparator<File>() {
@Override
public int compare(File f1, File f2) {
return f1.compareTo(f2);
// For descending
// return -f1.compareTo(f2);
}
});