Java 删除特定模式类型的zip文件
我已经编写了一个条件,在该条件下,它必须在目标文件夹中查找,并且必须删除扩展名为.zip的操作系统以及以名称开头的文件,例如“du_edf”模式(即文件名)可能是du_edf_tyu454656.zip,但它还必须确保这些zip文件不会被删除 如果在七天前创建,且开始时使用的模式为“abcd_edf”,且类型为zip,并且在七天前创建,则应删除该模式 下面是我提出的解决方案,但它不起作用。请告知其中的错误Java 删除特定模式类型的zip文件,java,file,Java,File,我已经编写了一个条件,在该条件下,它必须在目标文件夹中查找,并且必须删除扩展名为.zip的操作系统以及以名称开头的文件,例如“du_edf”模式(即文件名)可能是du_edf_tyu454656.zip,但它还必须确保这些zip文件不会被删除 如果在七天前创建,且开始时使用的模式为“abcd_edf”,且类型为zip,并且在七天前创建,则应删除该模式 下面是我提出的解决方案,但它不起作用。请告知其中的错误 if (c.isDirectory()) { final
if (c.isDirectory()) {
final File[] files = c.listFiles();
long currentTime = System.currentTimeMillis();
for (int i = 0; i < files.length; i++) {
//if (currentTime - files[i].lastModified() > 1000 * 60 * 60* 24 * 7)
String fileName = files[i].getName();
if(fileName.matches("abcd_edf*\\.zip") && currentTime - files[i].lastModified() > 1000 * 60 * 60* 24 * 7)
{
files[i].delete();
}
}
}
if(c.isDirectory()){
最终文件[]文件=c.listFiles();
长currentTime=System.currentTimeMillis();
对于(int i=0;i1000*60*60*24*7)
字符串文件名=文件[i].getName();
if(fileName.matches(“abcd\u edf*\\.zip”)和¤tTime-files[i].lastModified()>1000*60*60*24*7)
{
文件[i].delete();
}
}
}
如果带有时间检查,则应在之后添加大括号
final long week = 1000 * 60 * 60* 24 * 7;
for (int i = 0; i < files.length; i++)
{
if (currentTime - files[i].lastModified() > week )
{
String fileName = files[i].getName();
if(fileName.matches("abcd_edf*\\.zip"))
{
files[i].delete();
}
}
}
final long week=1000*60*60*24*7;
对于(int i=0;iweek)
{
字符串文件名=文件[i].getName();
如果(fileName.matches(“abcd\U edf*\\\.zip”))
{
文件[i].delete();
}
}
}
如果带有时间检查,则应在之后添加大括号
final long week = 1000 * 60 * 60* 24 * 7;
for (int i = 0; i < files.length; i++)
{
if (currentTime - files[i].lastModified() > week )
{
String fileName = files[i].getName();
if(fileName.matches("abcd_edf*\\.zip"))
{
files[i].delete();
}
}
}
final long week=1000*60*60*24*7;
对于(int i=0;iweek)
{
字符串文件名=文件[i].getName();
如果(fileName.matches(“abcd\U edf*\\\.zip”))
{
文件[i].delete();
}
}
}
调整正则表达式以匹配表达式:
if(fileName.matches("abcd_edf.*\\.zip")
bao\u edf
匹配字符串文字
*
匹配任何字符的0到n次出现
\\.zip
与literal.zip匹配
当前正则表达式正在查找0到n次出现的f
,但是它应该查找0到n次出现的任何字符,这些字符由
表示。量词*
正在应用于当前表达式中的前一个字符,从而导致问题。请密切注意第二个测试,它通过了演示当前正则表达式行为的测试
public static void main(String[] args) {
String fileName = "abcd_edf.zip";
String fileName1 = "abcd_edfffffff.zip";
String fileName2 = "abcd_edf_somethingelse.zip";
System.out.println(fileName.matches("abcd_edf*\\.zip")); //prints true
System.out.println(fileName1.matches("abcd_edf*\\.zip")); //prints true
System.out.println(fileName2.matches("abcd_edf*\\.zip")); //prints false
System.out.println(fileName.matches("abcd_edf.*\\.zip")); //prints true
System.out.println(fileName1.matches("abcd_edf.*\\.zip")); //prints true
System.out.println(fileName2.matches("abcd_edf.*\\.zip")); //prints true
}
调整正则表达式以匹配表达式:
if(fileName.matches("abcd_edf.*\\.zip")
bao\u edf
匹配字符串文字
*
匹配任何字符的0到n次出现
\\.zip
与literal.zip匹配
当前正则表达式正在查找0到n次出现的f
,但是它应该查找0到n次出现的任何字符,这些字符由
表示。量词*
正在应用于当前表达式中的前一个字符,从而导致问题。请密切注意第二个测试,它通过了演示当前正则表达式行为的测试
public static void main(String[] args) {
String fileName = "abcd_edf.zip";
String fileName1 = "abcd_edfffffff.zip";
String fileName2 = "abcd_edf_somethingelse.zip";
System.out.println(fileName.matches("abcd_edf*\\.zip")); //prints true
System.out.println(fileName1.matches("abcd_edf*\\.zip")); //prints true
System.out.println(fileName2.matches("abcd_edf*\\.zip")); //prints false
System.out.println(fileName.matches("abcd_edf.*\\.zip")); //prints true
System.out.println(fileName1.matches("abcd_edf.*\\.zip")); //prints true
System.out.println(fileName2.matches("abcd_edf.*\\.zip")); //prints true
}