如何在文件夹中保存2个最新文件

时间:2015-06-09 19:15:52

标签: java file

我正在创建一个备份逻辑,其中我将文件从源文件夹复制到目标文件夹(备份)。我的要求是我应该只在目标文件夹中存储2个最新文件。

我正在尝试使用file.lastModified(),但我不确定如何。

2 个答案:

答案 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