删除目标文件夹中特定类型的zip文件(如果它们是在七天之前创建的)

时间:2013-09-14 08:05:03

标签: java file

我正在将一个zip文件从源目录移动到目标目录,但由于目标目录还可能包含一些其他文件,如文本文件,图像,文档文件,zip文件。

我必须查看和跟踪名称以模式abcd开头的zip文件,之后它可能像abcd4567fg.zip一样,所以我必须捕获这样的zip文件,并且还必须查看自我的最终目标以来的创建时间如果它们是在七天之前创建的,不是要在目标目录中保留这些名称以abcd开头的zip文件,我已经提出了以下解决方案但是不合适请告知

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);
}

2 个答案:

答案 0 :(得分:0)

您必须检查文件名是否以abcd开头并以.zip结尾,所以

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++ ) {
       String fileName = files[i].getName():
       if(fileName.startsWith("abcd") && fileName.endsWith(".zip") && timeInEpoch  - f.lastModifiedDate()  > 1000*60*60*24*7)  
           files[i].delete();
    }
    System.out.println(fileList);
}

您也可以使用RegEx:

if(fileName.matches("abcd.*\\.zip")) //file name starts with abcd and ends with .zip

但我觉得它会慢一些


无论如何,我们可以简单地将.jpg文件重命名为.zip,因此,如果您真的想知道自己的文件是zip还是{{1}},那么您应check its MIME < / p>

答案 1 :(得分:0)

    String fileStartsWith = "abcd";
    String fileExtention = ".zip";
    String folderLocation = "/temp";
    long lValueOF7days = 7 * 24 * 60 * 60 * 1000l;
    long timeInEpoch = System.currentTimeMillis(); // slightly faster than new Date().getTimeInMillis();

    File f = new File(folderLocation);
    if (f.isDirectory()) {
        final File[] files = f.listFiles();
        for (int i = 0; i < files.length; i++) {
            if (files[i].getName().startsWith(fileStartsWith) && files[i].getName().endsWith(fileExtention) && (timeInEpoch - f.lastModified()) > lValueOF7days) {
                System.out.println("File " + files[i].getName());
                files[i].deleteOnExit();
            } else {
                System.out.println("Dont do any operation on other files :: " + files[i].getName());
            }
        }
    }