JiveJdon Community Forums
在线276人   首页   主题总表   培训咨询   精华   查搜   注册    登陆
首页 » 论坛 » J2EE/JavaEE/JEE/EJB/JSF等技术讨论
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
Go 总共有 7 回复 / 1
 发表新帖子   回复该主题贴
anklyang

悄悄话
发表文章: 12
注册时间: 2005年08月28日 21:38
Java读取File的问题 2005年09月06日 15:40 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表
请教一个问题:
我想要读取某一个路径下,文件最后修改的时间大于我给定的所有的文件.
比如是E:\file
我想要等到一部分的file,即是文件最后修改的时间大于我给定的
我目前的做法是:
查看所有的File,一一比对,得到我想要的File
//read path
Vector needReadFile = new Vector();
Date fileDate = new Date();
File[] files = new File(readFilePath).listFiles();
if (files == null) {
continue;
}
for (int x = 0; x < files.length; x++) {
File tempFile = files[x];
Date fileDate = new Date(tempFile.
lastModified());
if (fileDate.compare(lastModifyDate) == 1 ) {
needReadFile.add(readFilePath + File.separator +
tempFile.getName());
}
} //end for(int i = 0 ; i< files.length ; i++)

虽然这样做是可以达到,当我的File很多的时候,效率很差了
请问高人,有没有别的方法,我不用比对所有的File,就可以做到呢,或别方法来提高效率呢

Thanks!


wild fox

悄悄话
发表文章: 55
注册时间: 2003年03月19日 17:34
Re: Java读取File的问题 2005年09月06日 18:40 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
用FileFilter
File[] files = new File(readFilePath).listFiles(new FileFilter(){
public boolean accept(File pathname){
//.判断修改日期,符合条件返回true;否则false;

}});
awardsure

悄悄话
发表文章: 23
注册时间: 2005年08月27日 16:31
Re: Java读取File的问题 2005年09月06日 20:08 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
把Verctor 该成ArrayList 你还在使用Verctor ??
anklyang

悄悄话
发表文章: 12
注册时间: 2005年08月28日 21:38
Re: Java读取File的问题 2005年09月06日 20:22 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
主要问题不是用了Vector,或ArrayList的问题
anklyang

悄悄话
发表文章: 12
注册时间: 2005年08月28日 21:38
Re: Java读取File的问题 2005年09月06日 20:24 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
To wild fox :
我还是有点不明白,可否写详细一点呢
还有你能说说他的好处吗?
Thanks~
wild fox

悄悄话
发表文章: 55
注册时间: 2003年03月19日 17:34
Re: Java读取File的问题 2005年09月07日 11:33 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
看看listFiles()和listFiles(FileFilter filter) 的源代码

public File[] listFiles() {
String[] ss = list();
if (ss == null) return null;
int n = ss.length;
File[] fs = new File[n];
for (int i = 0; i < n; i++) {
fs = new File(this.path, ss);
}
return fs;
}

public File[] listFiles(FileFilter filter) {
String ss[] = list();
if (ss == null) return null;
ArrayList v = new ArrayList();
for (int i = 0 ; i < ss.length ; i++) {
File f = new File(this.path, ss);
if ((filter == null) || filter.accept(f)) {
v.add(f);
}
}
return (File[])(v.toArray(new File[0]));
}

采用第二个方法以后,只需要遍历一遍,而且代码更清晰,
采用第一个方法,你取得列表以后还需要遍历一遍过滤掉不符合条件的.

File[] files = new File(readFilePath).listFiles(new FileFilter(){
public boolean accept(File pathname){
//.判断修改日期,符合条件返回true;否则false;

}});

这里采用匿名类,实现一个FileFilter,你要修改过滤的逻辑,只需要修改accept()方法就是了,当然,你也可以专门写一个类比如

class FileModifyDateFilter implements FileFilter{
private Date baseDate = null;
public FileModifyDateFilter(Date d) {
baseDate = d;
}

public boolean accept(File f) {
if (baseDate == null)
return true;
if (f.lastModified() > baseDate.getTime())
return true;

return false;
}
}

anklyang

悄悄话
发表文章: 12
注册时间: 2005年08月28日 21:38
Re: Java读取File的问题 2005年09月07日 12:10 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
太感谢了~
比以前快多了
eastspy

悄悄话
发表文章: 4
注册时间: 2005年09月07日 22:00
Re: Java读取File的问题 2005年09月07日 22:01 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
不错,收藏!
这个主题有 7 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache 缓存 DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Seam Spring Struts
正在读取,请等待...
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
查询本论坛内 回复超过的热门帖子
     回复该主题贴
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com
anti spam