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 删除目标文件夹中特定类型的zip文件(如果在七天之前创建)_Java_File - Fatal编程技术网

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

Java 删除目标文件夹中特定类型的zip文件(如果在七天之前创建),java,file,Java,File,我正在将一个zip文件从源目录移动到目标目录,但由于目标目录可能还包含一些其他文件,如文本文件、图像、文档文件、zip文件 我必须查看和跟踪名称以模式abcd开头的zip文件,之后可能是类似abcd4567fg.zip的任何文件,因此我必须捕获此类zip文件,还必须查看其创建时间,因为我的最终目标是,如果创建了此类名称以abcd开头的zip文件,则不会将其保留在目标目录中在七天前,我提出了以下解决方案,但不适合,请告知 long timeInEpoch = System.currentTime

我正在将一个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);
}
long-timeInEpoch=System.currentTimeMillis();//略快于新日期();
文件f=新文件(“/tmp”);
if(f.isDirectory()){
最终文件[]文件=f.listFiles();
对于(int i=0;i1000*60*60*24*7)
文件[i].delete();
}
System.out.println(文件列表);
}

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

long-timeInEpoch=System.currentTimeMillis();//略快于新日期();
文件f=新文件(“/tmp”);
if(f.isDirectory()){
最终文件[]文件=f.listFiles();
对于(int i=0;i1000*60*60*24*7)
文件[i].delete();
}
System.out.println(文件列表);
}

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

if(fileName.matches("abcd.*\\.zip")) //file name starts with abcd and ends with .zip
但我想会慢一些


无论如何,可以简单地将
.jpg
文件重命名为
.zip
,因此,如果您真的想知道您的文件是否为
zip
,您应该
字符串文件startswith=“abcd”;
字符串fileExtention=“.zip”;
字符串folderLocation=“/temp”;
7天的长左值=7*24*60*60*1000l;
long-timeInEpoch=System.currentTimeMillis();//略快于新日期();
文件f=新文件(folderLocation);
if(f.isDirectory()){
最终文件[]文件=f.listFiles();
对于(int i=0;ilvalueOf7天){
System.out.println(“文件”+文件[i].getName());
文件[i].deleteOnExit();
}否则{
System.out.println(“不要对其他文件执行任何操作::”+文件[i].getName());
}
}
}

你知道什么是标点符号吗?你的问题很难理解。无论如何,我已经提出了下面的解决方案,但它不合适,你能解释一下为什么吗?我会编辑它,此解决方案不适用,因为它将删除该文件夹中的所有文件,无论是文本文件还是图像文件,还将删除名称不以abcd开头的其他zip文件,我不这么认为want@tuntunwretee:因此,您的问题实际上只是关于“如何检测以“abcd”开头并以“.zip”结尾的文件?”"? 如果你已经完成了基于时间的部分,那当然是你所需要的。由于时间的特殊性,我会尝试将文件上次修改的日期转换为日期对象,并将其与过去7天的matcher日期进行比较,这就是我;)@乔恩,是的,太完美了,那是我的question@bsd否。
匹配
方法与完整字符串匹配,因此开始和结束标识符(
^
$
)不匹配needed@BackSlash请参阅文件名为abcd\u fgfh\u fhjdfjd\u ty.zip,那么我可以使用如下正则表达式..if(filename.matches(“abcd*\\.zip”))注意寻找7天的毫秒数。
    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());
            }
        }
    }