用java遍历某个文件夹,如何寻找最后修改日期是前一天的文件?
即:用java遍历某个文件夹,返回最后修改日期是前一天的文件,如果当天是星期一,则返回上周六的文件求大虾给出具体的代码,多谢了...
即:用java遍历某个文件夹,返回最后修改日期是前一天的文件,如果当天是星期一,则返回上周六的文件
求大虾给出具体的代码,多谢了 展开
求大虾给出具体的代码,多谢了 展开
3个回答
展开全部
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());
}
}
}
}
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());
}
}
}
}
展开全部
自己动手帮你写了一个,楼上的写得不够好,原因是,没有充分考虑时间间隔,还有写法不专业
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;
}
}
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;
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
文件File类有个lastModified()方法,返回文件最近修改日期,你取到这个日期和当前日期进行比较,比较是用Calendar类,判断两个日期的差值,符合你要求的就显示不符合的就跳过。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询