我正在创建一个备份逻辑,其中我将文件从源文件夹复制到目标文件夹(备份)。我的要求是我应该只在目标文件夹中存储2个最新文件。
我正在尝试使用file.lastModified(),但我不确定如何。
答案 0 :(得分:0)
我想我设法解决了我的问题。这就是我做的。如果有更好的方法,请告诉我。谢谢!
FileUtils.copyDirectory(source, dest);
long lastModified = 0;
if(Util.hasData(dest.listFiles())){
File[] fileList = dest.listFiles();
for(File file: fileList){
if(lastModified != 0 ){
if(lastModified > file.lastModified()){
lastModified = file.lastModified();
}
}else {
lastModified = file.lastModified();
}
}
if (dest.listFiles().length >= 2) {
for (File file : fileList) {
if (file.lastModified() == lastModified) {
file.delete();
}
}
}
}
答案 1 :(得分:0)
[yourfile].lastModified()
将返回上次更改文件的日期(以毫秒为单位)。因此,它的数量越大,编辑的文件越近。使用此功能,您只需浏览文件夹中的每个文件,并确定哪个是最近的两个文件。这样的事情应该有效:
ArrayList<File> files = new ArrayList<>(); //pretend this is all the files in your folder
long[] timemodified = new long[files.length];
long recentone = 1; //temporarly stores the time of the most recent file
long recenttwo = 0;
File mostrecentone = null;
File mostrecenttwo = null;
for(File f : files){ //for each file in the arraylist
long tm = f.lastModified(); //get the time this file was last modified
if(tm > recentone){ //if it is more recent than the current most recent file
recentone = tm; //set the current most recent file time to be this
mostrecentone = f; //set the current most recent file to be f
}else if(tm > mostrecenttwo){
recenttwo = tm;
mostrecenttwo = f;
}else{
f.delete();
}
}
我非常确定会有效,您需要做的就是将文件夹中的所有文件放入ArrayList
。