Java 删除目录(但不是目录)中直到昨天创建的所有文件-一行解决方案
如何删除目录(但不是目录)中直到昨天创建的所有旧文件 我试过了,但直到昨天才删除文件Java 删除目录(但不是目录)中直到昨天创建的所有文件-一行解决方案,java,file-io,Java,File Io,如何删除目录(但不是目录)中直到昨天创建的所有旧文件 我试过了,但直到昨天才删除文件 for(File file: new File(strFile).listFiles()) if (!file.isDirectory() && file.lastModified() < 1.0) file.delete(); for(文件:新文件(strFile).listFiles()) 如果(!file.isDirectory()&&file.l
for(File file: new File(strFile).listFiles())
if (!file.isDirectory() && file.lastModified() < 1.0)
file.delete();
for(文件:新文件(strFile).listFiles())
如果(!file.isDirectory()&&file.lastModified()<1.0)
delete();
上次修改的首次返回:
一个长值,表示上次修改文件的时间,
自纪元(格林威治标准时间1月1日00:00:00)起以毫秒为单位测量,
1970),如果文件不存在或发生I/O错误,则为0L
您需要以毫秒为单位获取当前时间,然后减去上次修改的返回值,并验证它是否在目标时段之前被修改。或者以您想要的任何类型执行时间计算
遵循您的代码:
long day = 1000 * 60 * 60 * 24;
long now = System.currentTimeMillis();
for(File file: new File(DIRECTORY).listFiles())
if (!file.isDirectory() && (now - file.lastModified() > day))
file.delete();
理想情况下,您可以将此作为计划任务运行下面是一个删除所有超过一天的临时文件的示例:
import org.apache.commons.lang3.Validate;
import java.io.File;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
public class StackOverflow44850006 {
/**
* deletes all the files in a directory modified before a given timestamp
*
* @param directoryPath path to delete from
* @param stamp everything with a mod date before this timestamp will be deleted
* @return the number of items deleted
*/
public static long deleteOld(final String directoryPath, final Date stamp) {
final File[] files = new File(directoryPath).listFiles();
Validate.notNull(files, "Unable to open dir. Does it exist?");
return Arrays.stream(files)
.filter(f -> !f.isDirectory())
.filter(f -> f.lastModified() < stamp.getTime())
.map(File::delete)
.filter(Boolean::booleanValue)
.count();
}
public static void main(String[] args) {
final String tempDir = System.getProperty("java.io.tmpdir");
final Calendar yesterday = Calendar.getInstance();
yesterday.add(Calendar.DATE, -1);
System.out.println(deleteOld(tempDir, yesterday.getTime()));
}
}
import org.apache.commons.lang3.Validate;
导入java.io.File;
导入java.util.array;
导入java.util.Calendar;
导入java.util.Date;
公共类StackOverflow44850006{
/**
*删除在给定时间戳之前修改的目录中的所有文件
*
*@param directoryPath要从中删除的路径
*@param将删除在此时间戳之前带有mod date的所有内容
*@返回已删除的项目数
*/
公共静态长deleteOld(最终字符串directoryPath,最终日期戳){
最终文件[]文件=新文件(directoryPath).listFiles();
Validate.notNull(文件“无法打开目录。它存在吗?”);
返回Arrays.stream(文件)
.filter(f->!f.isDirectory())
.filter(f->f.lastModified()
运行该代码的结果是什么?这可能会有所帮助