我能够做到这一点:
File images = new File(path);
File[] imageList = images.listFiles(new FilenameFilter(){
public boolean accept(File dir, String name)
{
return name.endsWith(".jpg");
}
});
我是从stackoverflow的答案中复制过来的。
有没有办法listFile ok kind“目录”(文件夹)并按反向字母顺序列出? ......还有反向日期?
答案 0 :(得分:23)
final File[] sortedFileName = images.listFiles()
if (sortedFileName != null && sortedFileName.length > 1) {
Arrays.sort(sortedFileName, new Comparator<File>() {
@Override
public int compare(File object1, File object2) {
return object1.getName().compareTo(object2.getName());
}
});
}
使用Array.sort()
比较文件名称。
修改强> 使用此代码按日期排序
final File[] sortedByDate = folder.listFiles();
if (sortedByDate != null && sortedByDate.length > 1) {
Arrays.sort(sortedByDate, new Comparator<File>() {
@Override
public int compare(File object1, File object2) {
return (int) ((object1.lastModified() > object2.lastModified()) ? object1.lastModified(): object2.lastModified());
}
});
}
答案 1 :(得分:2)
指针:
File.isDirectory()
File.lastModified()
答案 2 :(得分:2)
您可以使用以下代码。为我工作。
final File[] files= file.listFiles();
if (files != null && files.length > 1) {
Collections.sort(Arrays.asList(files), new Comparator<File>() {
public int compare(File o1, File o2) {
long lastModifiedO1 = o1.lastModified();
long lastModifiedO2 = o2.lastModified();
return (lastModifiedO2 < lastModifiedO1) ? -1 : ((lastModifiedO1 > lastModifiedO2) ? 1 : 0);
}
});
}
答案 3 :(得分:1)
我得到了一个例外
IllegalArgumentException:比较方法违反了其一般合同!
所以我使用了它,它运作正常:
Arrays.sort(filesList, new Comparator<File>() {
@Override
public int compare(File a, File b) {
if(a.lastModified() < b.lastModified() )
return 1;
if(a.lastModified() > b.lastModified() )
return -1;
return 0;
}});
答案 4 :(得分:1)
如果您希望简洁:
File[] files = folder.listFiles();
Arrays.sort(files, (a, b) -> Long.compare(b.lastModified(), a.lastModified()));
答案 5 :(得分:0)
如果你想按日期排序,那么选择下面的代码,如果你想要名字,那么已经回答如上:)
File f = new File("/home/myfiles");
File [] files = f.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;
}
}
});
答案 6 :(得分:0)
按逆向模式按上次修改日期订购文件的正确方法是:
Arrays.sort(Files, LastModifiedFileComparator.LASTMODIFIED_REVERSE);
对于此指令,您将需要org.apache中的commons.io库,您可以从here下载
答案 7 :(得分:0)
我使用此
解决了这个问题final File[] sortedByDate = folder.listFiles();
if (sortedByDate != null && sortedByDate.length > 1) {
Arrays.sort(sortedByDate, new Comparator<File>() {
@Override
public int compare(File object1, File object2) {
return (int) ((object1.lastModified() > object2.lastModified()) ? 0: 1);
}
});
}
我返回0和1个lastModified()
值,解决了我的问题。
答案 8 :(得分:0)
对于基于文件名的排序,添加
public void Execute(IServiceProvider serviceProvider)
{
var executionContext = serviceProvider.GetService<IPluginExecutionContext>();
var parentContext = executionContext.ParentContext;
if (parentContext != null &&
(parentContext.MessageName == "ExportToExcel" ||
parentContext.MessageName == "ExportDynamicToExcel"))
{
// Place your logic here
}
}
而不是
git clone
避免因语言环境更改和大/小写文件名导致的排序问题
object1.getName().toLowerCase(Locale.getDefault())
答案 9 :(得分: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);
}
});