使用Java删除具有相同前缀字符串的文件
我的目录中有大约500个文本文件,文件名中都带有相同的前缀dailyReport_
。
文件的后半部分是文件的日期。(例如dailyReport_08262011.txt
,dailyReport_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