如何得到一个目录下按last modify时间排序的文件名列表?

ghw 2002-01-13 06:29:42
如何得到一个目录下按last modify时间排序的文件名列表?
我在java中没有发现好的方法,要实现的话,代码挺长。

哪位兄弟有好的方法,请贴上来。
...全文
348 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ghw 2002-01-14
  • 打赏
  • 举报
回复
谢谢二位,我忘了TreeMap有按key排序的功能了,这样一来就把手动排序的代码省掉了。
ghw 2002-01-14
  • 打赏
  • 举报
回复
如果没什么别的好办法,只有拿"lastModify+fileName"作为key了。
ghw 2002-01-14
  • 打赏
  • 举报
回复
对了,这种用lastModify作为key的方法有些问题,如果一个目录下有几个文件的lastModify完全相同的话怎么办?
masterz 2002-01-13
  • 打赏
  • 举报
回复
import java.io.*;
import java.util.*;
public class Sortfile
{
public static void main(String args[])
{
String[] ret=getSortFile("c:\\temp\\echoc");
if(ret!=null)
{
for(int i=0;i<ret.length;i++)
{
System.out.println(ret[i]);
}
}
else
System.out.println("null path:");
}
public static String[] getSortFile(String pathname)
{
try
{
File fpath=new File(pathname);
if(fpath.isDirectory()==false)
{
//System.out.println(pathname+" is not a valid path name!");
return null;
}
String[] filelist=fpath.list();
int length=filelist.length;
Vector filevec=new Vector();
Map mapfile=new TreeMap();
for(int i=0;i<length;i++)
{
String filei=filelist[i];
String fname=pathname+filei;
File ftmp=new File(pathname,filei);
if(ftmp.isFile())
{
mapfile.put(new Long(ftmp.lastModified()),ftmp.getPath());
//System.out.println("40:"+ftmp.getPath());
}
}
Collection filecoll=mapfile.values();
length=filecoll.size();
if(length==0)
return null;
String[] ret=new String[length];
Iterator ita=filecoll.iterator();
int i=0;
while(ita.hasNext())
{
Object obj=ita.next();
//System.out.println("54:"+obj);
ret[i++]=(String)obj;
}
return ret;
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}

}
z_yheart 2002-01-13
  • 打赏
  • 举报
回复
import java.io.*;
import java.lang.*;
import java.util.*;

...

TreeMap tm=new TreeMap();
File f=new File("C:\\");
File subFile[]=f.listFiles();
int fileNum=subFile.length;
for(int i=0;i<fileNum;i++)
{
Long tempLong=new Long(subFile[i].lastModified());
tm.put(tempLong,subFile[i]);
}
Set set=tm.keySet();
Iterator iter=set.iterator();
while(iter.hasNext())
{
Object key=iter.next();
Object objValue=tm.get(key);
File tempFile=(File)objValue;
System.out.println(tempFile.getPath()+"\t"+key.toString());
}

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧