Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 保留最近7天的zip文件并从目录中删除其余所有文件_Java_File - Fatal编程技术网

Java 保留最近7天的zip文件并从目录中删除其余所有文件

Java 保留最近7天的zip文件并从目录中删除其余所有文件,java,file,Java,File,我开发了一个应用程序,可以将源文件从源目录移动到目标目录 通过使用apache Fileutils类方法,如下所示 private void filemove(String FilePath2, String s2) { String filetomove = FilePath2 + s2; //file to move its complete path File f = new File(filetomove); File d = new File(targ

我开发了一个应用程序,可以将源文件从源目录移动到目标目录 通过使用apache Fileutils类方法,如下所示

private void filemove(String FilePath2, String s2) { 

    String filetomove = FilePath2 + s2;    //file to move its complete path
    File f = new File(filetomove);
    File d = new File(targetFilePath); //    path of target directory 
    try {
        FileUtils.copyFileToDirectory(f, d);
        f.delete(); //from source dirrectory we are deleting the file if it succesfully move
    //*********** code need to add to delete the zip files of target directory and only keeping the latest two zip files  ************//        
    } catch (IOException e) {
        String errorMessage =  e.getMessage();
        logger.error(errorMessage);

    }

}
现在,当我将文件移动到目标目录时,在这种情况下,目标目录将具有某些zip文件,我尝试的是 当我将源文件移动到目标目录时。。。它应该进行预检查,以便在目标目录中删除所有zip文件,但只保留最后7天的zip文件(因此不应删除最后7天的zip文件)

我所尝试的是为最近两天的zip文件工作,也就是说,它保留最近两天的zip文件

请告知我如何在七天内更改此文件,使其保留最后七天的zip文件?
获取数组中的所有文件,并对其进行排序,然后忽略前两个:

    Comparator<File> fileDateComparator = new Comparator<File>() {
        @Override
        public int compare(File o1, File o2) {
            if(null == o1 || null == o2){
                return 0;
            }
            return (int) (o2.lastModified() - o1.lastModified());//yes, casting to an int. I'm assuming the difference will be small enough to fit.
        }
    };

    File f = new File("/tmp");
    if (f.isDirectory()) {
        final File[] files = f.listFiles();
        List<File> fileList = Arrays.asList(files);
        Collections.sort(fileList, fileDateComparator);
        System.out.println(fileList);
    }
Comparator fileDateComparator=new Comparator(){
@凌驾
公共整数比较(文件o1、文件o2){
如果(空==o1 | |空==o2){
返回0;
}
return(int)(o2.lastModified()-o1.lastModified());//是的,转换为int。我假设差异足够小,可以适应。
}
};
文件f=新文件(“/tmp”);
if(f.isDirectory()){
最终文件[]文件=f.listFiles();
List fileList=Arrays.asList(文件);
Collections.sort(fileList、fileDateComparator);
System.out.println(文件列表);
}

您真的需要排序吗?如果需要删除超过7天的文件,请获取lastModifieddate并从当前时间中减去它。如果差异超过7*24*60*60秒,则可以将其删除

您只需要在f.listFiles()行之后有一个for循环。非实际代码-用于获取工作代码

long  timeInEpoch = System.currentTimeMillis(); // slightly faster than new Date().getTimeInMillis();
File f = new File("/tmp");
if (f.isDirectory()) {
    final File[] files = f.listFiles();
    for(int i =0; i < files.length ; i++ ) {
       if( timeInEpoch  - f.lastModifiedDate()  > 1000*60*60*24*7 )  
           files[i].delete();
    }
    System.out.println(fileList);
}
long-timeInEpoch=System.currentTimeMillis();//略快于新日期();
文件f=新文件(“/tmp”);
if(f.isDirectory()){
最终文件[]文件=f.listFiles();
对于(int i=0;i1000*60*60*24*7)
文件[i].delete();
}
System.out.println(文件列表);
}

Thnanks很多,你能不能请你更新这篇文章,修改我发布的代码中的更改,这将有助于掌握更多信息。
f.delete()删除整个目录。。。。。你不应该改成
文件[i].delete()?抓得好。。在你的回答中也可以找到评论:)