我有像
这样的文件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()
但我观察到我必须传递文件的全名。我可以通过传递该文件的子字符串来完成吗?
答案 0 :(得分:4)
首先列出目录中的文件
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();
}
}
答案 1 :(得分: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;
}
});
然后迭代返回文件数组以删除它们。
答案 2 :(得分:1)
您需要完整的文件名,因此您必须获取目录中的文件列表并对其进行迭代以确定要删除的文件。
这篇文章展示了如何获取文件列表并使用它。它确实处理目录内的目录。 list all files from directories and subdirectories in Java