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