2

我有文件

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_EXPORT_TIME_STAMP_IMAGES"。我已经做了一些谷歌并得到了类似的代码

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

file.delete()

但我观察到我将不得不传递文件的全名。我可以通过传递该文件的子字符串来做到这一点吗?

4

3 回答 3

5

首先列出目录中的文件

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();
    }
}
于 2013-01-19T08:47:39.873 回答
3

使用 FilenameFilter 处理具有已知模式的文件名。

在你的情况下,尝试这样的事情:

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

     });

然后遍历返回文件数组以删除它们。

于 2013-01-19T08:55:56.487 回答
1

您需要完整的文件名,因此您必须获取目录中的文件列表并遍历它们以确定要删除的文件。

这篇文章展示了如何获取文件列表并使用它。它确实处理目录内的目录。列出Java中目录和子目录中的所有文件

于 2013-01-19T08:44:52.497 回答