当前位置: 首页 > 面试题库 >

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

隆飞宇
2023-03-14
问题内容

我的目录中有大约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() );
    }
}


 类似资料:
  • 在我的脚本中,我有一个字符串及其前缀/后缀。我需要从原始字符串中删除前缀/后缀。 例如,假设我有以下值: 如何得到以下结果?

  • 问题内容: 假设我有来自Input的带有名称的字符串(例如:)。如何从输入开始删除称呼? 可能出现的称呼清单是: 任何解决方案或正则表达式声明都可以考虑所有这些称呼? 我尝试了这个: 它正在工作,但是就象名字一样,它正在删除。 问题答案: 您可以使用 参见正则表达式演示 图案细节 -忽略大小写的选项 -字符串开始 -0+空格 - 其次有,,,,或或(可能更长时间后添加这里) -字边界 -0或多个空

  • 问题内容: 我正在为我的计算机科学课程做作业。任务是获取用户输入,删除所有元音,然后打印新语句。 我知道我可以使用以下代码轻松做到这一点: 但是我的老师希望我使用嵌套的if和else if语句来实现结果。现在我正在使用这样的东西: 但是我不确定在和语句中要做什么。我应该删除这封信吗?还是有更好的方法来做到这一点? 鉴于这是我的作业,我不希望完整的答案只是提示。谢谢! 问题答案: Character

  • 问题内容: 尝试删除所有非0-9的字母和字符和一个句点。我正在使用,但它也会删除小数,如何也保留小数? 问题答案: 试试这个代码: 现在将包含。

  • 问题内容: 我需要从字符串中删除所有字符,然后再在字符串中出现此字符: 不知道我该怎么做。 问题答案: 您可以使用strstr做到这一点。

  • 问题内容: 我是python编程的新手,我有点困惑。我尝试从字符串中获取字节以进行哈希和加密,但是我得到了 字符串前面的b字符,如以下示例所示。有什么办法可以避免这种情况吗?有人可以提供解决方案吗?对不起这个愚蠢的问题 输出: 问题答案: 解码是多余的 首先,您对这种情况有误解,这是因为对所发生的事情有误解。 您会得到,因为您已对其进行编码,现在它是一个字节对象。 修正: 您可以先打印字符串 编码