0

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

我必须查看并跟踪名称以模式 abcd 开头的 zip 文件,然后它可能是 abcd4567fg.zip 之类的任何东西,所以我必须捕获这样的 zip 文件并且还必须查看它们的创建时间,因为我的最终目标不是如果它们是在 7 天之前创建的,则将名称以 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);
}
4

2 回答 2

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());
            }
        }
    }
于 2013-09-14T08:41:12.043 回答
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);
}

您还可以使用正则表达式:

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

但我认为它会更慢


无论如何,可以简单地将.jpg文件重命名为.zip,所以如果你真的想知道你的文件是否是 a zip,你应该检查它的 MIME

于 2013-09-14T08:25:35.773 回答