使用Java删除具有相同前缀字符串的文件

我的目录中有大约500个文本文件,文件名中都带有相同的前缀dailyReport_

文件的后半部分是文件的日期。(例如dailyReport_08262011.txtdailyReport_08232011.txt

我想使用Java过程删除这些文件(我可以使用shell脚本,然后在crontab中将其添加为作业,但该应用程序是供外行使用的)。

我可以使用类似的方法删除一个文件

        try{

File f=new File("dailyReport_08232011.txt");

f.delete();

}

catch(Exception e){

System.out.println(e);

}

但是我可以删除具有特定前缀的文件(例如:dailyReport08第8个月)吗,我可以使用轻松在shell脚本中执行此操作rm -rf

dailyReport08*.txt

但是File f=new File("dailyReport_08*.txt");在Java中不起作用(如预期的那样)。

现在, 来搜索目录中的文件,在Java中 可能实现?

我可以使用一些类似于*Shell脚本的特殊字符来实现此目的吗?

回答:

不,你不能。Java是相当低级的语言(与shell脚本相比),因此必须更加明确地执行此类操作。您应该使用folder.listFiles(FilenameFilter)搜索带有所需掩码的文件,然后遍历返回的数组以删除每个条目。像这样:

final File folder = ...

final File[] files = folder.listFiles( new FilenameFilter() {

@Override

public boolean accept( final File dir,

final String name ) {

return name.matches( "dailyReport_08.*\\.txt" );

}

} );

for ( final File file : files ) {

if ( !file.delete() ) {

System.err.println( "Can't remove " + file.getAbsolutePath() );

}

}

以上是 使用Java删除具有相同前缀字符串的文件 的全部内容, 来源链接: utcz.com/qa/425251.html

回到顶部