用java遍历某个文件夹,如何寻找最后修改日期是前一天的文件?

即:用java遍历某个文件夹,返回最后修改日期是前一天的文件,如果当天是星期一,则返回上周六的文件求大虾给出具体的代码,多谢了... 即:用java遍历某个文件夹,返回最后修改日期是前一天的文件,如果当天是星期一,则返回上周六的文件
求大虾给出具体的代码,多谢了
展开
 我来答
rest0000
2011-11-16 · 超过18用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:37.1万
展开全部
package test;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

public class Test {

/**
* @param args
*/
public static void main(String[] args) {
//设置日期转换格式
SimpleDateFormat smp = new SimpleDateFormat("yyyyMMdd");
//设置一个list,存放符合要求的文件名
List<String> list = new ArrayList<String>();
Date date = new Date();
//System.out.println(smp.format(date));
//定义当前时间
int now_time= Integer.parseInt(smp.format(date));
String path = "D:/";
File file = new File(path);
//定义文件修改时间
int modify_time=0;
if(file.isDirectory()){
File[] files=file.listFiles();
for(int i = 0 ;i<files.length;i++){
modify_time=Integer.parseInt(smp.format(new Date(files[i].lastModified())));
//当前时间减去修改时间==1的话 该文件符合要求
if(now_time-modify_time==1){
list.add(files[i].getName());
}
}
}

//遍历文件夹完毕,打印符合要求的文件名
if(list.size()>0){
for(Iterator<String> it = list.iterator();it.hasNext();){
System.out.println(it.next());
}
}
}
}
askjsp
推荐于2016-05-26
知道答主
回答量:15
采纳率:0%
帮助的人:13.2万
展开全部
自己动手帮你写了一个,楼上的写得不够好,原因是,没有充分考虑时间间隔,还有写法不专业

package com.last;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

public class Modify {

private String path;
private List<File> files = new ArrayList<File>();
private Integer dateInterval = 2;
private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

public void findFilesModifyAtYesterday() {
File file = new File(path);
isDirectory(file);
iterator(file);
}

private void isDirectory(File file) {
if (!file.isDirectory()) {
throw new RuntimeException("Path["+ path +"] is not a directory");
}
}

private void iterator(File file) {
if (file.isDirectory()) {
File[] listFiles = file.listFiles();
for (File f : listFiles) {
iterator(f);
}
} else if(checkInterval(file)) {
files.add(file);
}
}

private boolean checkInterval(File file) {
Calendar last = Calendar.getInstance();
last.setTime(new Date(file.lastModified()));
cleanTime(last);

Calendar today = Calendar.getInstance();
addInterval(today);

return last.compareTo(today) == 1;
}

private void cleanTime(Calendar calendar) {
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
}

private void addInterval(Calendar calendar) {
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - dateInterval);
cleanTime(calendar);
}

private String lastModified(long time) {
return dateFormat.format(new Date(time));
}

public static void main(String[] args) {
Modify modify = new Modify();
modify.setPath("E:\\学习资料\\书");
modify.setDateInterval(2);
modify.findFilesModifyAtYesterday();

List<File> files = modify.result();
System.out.println("Today:" + modify.dateFormat.format(new Date()) + " | Count:" + files.size());
for (File file : files) {
System.out.println("[File]" + modify.lastModified(file.lastModified())
+ " - " + file.getPath());
}
}

/**
* 设置间隔日期,默认2天
* @param dateInterval
*/
public void setDateInterval(Integer dateInterval) {
this.dateInterval = dateInterval;
}

/**
* 设置文件夹路径
* @param path
*/
public void setPath(String path) {
this.path = path;
}

/**
* 获取所有结果
* @return
*/
public List<File> result() {
return files;
}

}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gongmeitao
2011-11-17 · 超过26用户采纳过TA的回答
知道答主
回答量:86
采纳率:0%
帮助的人:35.4万
展开全部
文件File类有个lastModified()方法,返回文件最近修改日期,你取到这个日期和当前日期进行比较,比较是用Calendar类,判断两个日期的差值,符合你要求的就显示不符合的就跳过。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式