我想根据我的创建日期列出文件。 当我更新任何图像并试图检索所有图像时,订单会随机更改。
这是我的代码,
File[] files = parentDir.listFiles();
for (File file : files) {
// I am getting files here
}
任何帮助..
答案 0 :(得分:3)
List<File> fileList = new ArrayList<File>();
Collections.sort(fileList, new Comparator<File>() {
@Override
public int compare(File file1, File file2) {
long k = file1.lastModified() - file2.lastModified();
if(k > 0){
return 1;
}else if(k == 0){
return 0;
}else{
return -1;
}
}
});
答案 1 :(得分:3)
我希望根据我的创建日期列出文件。
如前两个答案所指出的,您可以根据修改日期对文件进行排序:
file.lastModified()
但修改日期已更新,例如在重命名文件的瞬间。因此,这不能代表创建日期。
不幸的是,创建日期不可用,因此您需要重新考虑您的基本策略:
答案 2 :(得分:2)
试试这可能对你有帮助,
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());
}
}
答案 3 :(得分:2)
此处是用于根据修改日期对文件进行排序的代码,因为创建日期不可用。
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;
}
}
});
答案 4 :(得分: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
}
答案 5 :(得分:0)
伙计们,如果您不能解决此LastModifiedFileComparator
问题,这是我找到的解决方案。
第1步
打开应用级别build.gradle
并添加依赖项,如下所示。要获取更新的版本,请点击here
implementation group: 'commons-io', name: 'commons-io', version: '2.0.1'
第2步
如果不起作用,则可以在您的应用级别mavenCentral()
repositories
创建新的build.gradle
repositories{
mavenCentral()
}
dependencies {
//all implementation
所有内容都应像魅力一样工作,如果没有,请在此处参考
答案 6 :(得分:0)
1。将此添加到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);
答案 7 :(得分:0)
一种对文件数组进行排序的快速而优雅的方式,按日期的变化是:
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);
}
});