【发布时间】:2019-06-20 05:15:07
【问题描述】:
我正在尝试制作一个在几组文件之间切换的非常简单的 java 程序。为此,我试图删除预先存在的文件,然后从我正在谈论的“预设”之一中复制这些文件。但是,由于同一位置会有很多其他我不想触摸的文件,所以我只想删除具有特定前缀/名称的文件。
举例说明:
预设文件夹有:enbcache(包含子文件夹和项目的文件夹)、enbseries(包含子文件夹和项目的文件夹)和 enblocal.ini。
目标文件夹具有相同的文件和许多其他文件:enbcache(包含子文件夹和项目的文件夹)、enbseries(包含子文件夹和项目的文件夹)、enblocal.ini、data、d3d11.dll、tbb.dll、其他文件夹。 .等等
该程序应删除所有名称中带有“enb”的旧文件和文件夹,并保留其他所有内容。然后将“预设文件夹一”中的文件复制到目标文件夹中。
我发现了许多用 java 删除文件和文件夹的不同方法,以及删除特定文件的方法。但是,我遇到的问题是尝试结合这些东西时。 由于文件夹中的项目需要删除但没有“enb”前缀,因此程序无法删除文件夹,因为它仍然包含剩余文件。
我尝试过使用 NIO Java 7 和 8 以及仅使用 File 的更简单方法,但一直到无法删除包含项目的“enb”文件夹的同一点。 我将在这里发布某人提供的代码:
Delete Files with same Prefix String using Java
我目前正在尝试使用。
当使用“enb”前缀时,我遇到了前面描述的问题:它无法删除所有文件夹,因为其中一些文件夹中有没有“enb”前缀的文件。
public static void deleteFilesForPathByPrefix(final Path path, final String prefix) {
try (DirectoryStream<Path> newDirectoryStream = Files.newDirectoryStream(path, prefix + "*")) {
for (final Path newDirectoryStreamItem : newDirectoryStream) {
Files.delete(newDirectoryStreamItem);
}
} catch (final Exception e) {
e.printStackTrace();
}
}
【问题讨论】:
标签: java