Java 如何使用该文件名的子字符串删除该文件

Java 如何使用该文件名的子字符串删除该文件,java,Java,我有文件 LOG_EXPORT_TIME_STAMP_IMAGES-LOG1-T20130119_000817 LOG_EXPORT_TIME_STAMP_IMAGES-LOG1-T20130119_000818 LOG_EXPORT_TIME_STAMP_IMAGES-LOG1-T20130119_000819 在位置“C:\temp”我想删除所有以“LOG\u EXPORT\u TIME\u STAMP\u IMAGES”开头的文件 File file = new File("c:\\Te

我有文件

LOG_EXPORT_TIME_STAMP_IMAGES-LOG1-T20130119_000817
LOG_EXPORT_TIME_STAMP_IMAGES-LOG1-T20130119_000818
LOG_EXPORT_TIME_STAMP_IMAGES-LOG1-T20130119_000819
在位置
“C:\temp”
我想删除所有以
“LOG\u EXPORT\u TIME\u STAMP\u IMAGES”开头的文件

File file = new File("c:\\Temp\\LOG_EXPORT_TIME_STAMP_IMAGES-LOG1-T20130119_000817");

file.delete()

但我观察到的情况是,我必须传递文件的全名。我可以通过传递该文件的子字符串来完成吗?

您需要完整的文件名,因此必须获取目录中的文件列表,并对其进行迭代以确定要删除的文件


这篇文章展示了如何获取文件列表并使用它。它确实处理目录中的目录

首先列出目录中的文件

File[] files = directory.listFiles();
然后遍历数组并逐个删除每个文件。这将为您选择要删除的文件提供更多控制

在这些方面:

File directory = new File("C:\temp");
File[] files = directory.listFiles();
for (File f : files)
{
    if (f.getName().startsWith("LOG_EXPORT_TIME_STAMP_IMAGES"))
    {
      f.delete();
    }
}

使用文件名筛选器处理具有已知模式的文件名

在您的情况下,请尝试以下操作:

File[] files = directory.listFiles(new FilenameFilter()
     {
         public boolean accept(File dir, String name)
         {
             if(name.startsWith(<your string here>)
             {
                 return true;
             }
             return false;
         }

     });
File[]files=directory.listFiles(新文件名过滤器()
{
公共布尔接受(文件目录,字符串名称)
{
if(name.startsWith()
{
返回true;
}
返回false;
}
});

然后迭代返回文件数组以删除它们。

确保检查该目录是否真的是一个目录,以及返回的每个文件是否真的是一个文件。这就是我建议查看递归目录列表器的原因。别忘了检查该“文件”是否为实际上是一个文件,而不是另一个目录。谢谢帕特。我会处理它的。