我正在java中编写一个涉及文件系统中文件的小应用程序,并使用java.nio的包。解决递归删除文件树的问题:我的代码如下:
Files.walk(rootPath).sorted(Comparator.reverseOrder()).forEach(new Consumer<Path>()
{
@Override
public void accept(Path path)
{
try
{
if (Files.isDirectory(path))
{
unregister(path);
}
Files.delete(path);
}
catch (IOException e)
{
e.printStackTrace();
}
}
});
文件树如下所示:
Level 1 folder
Level 2 folder
Level 3 folder
Level 4 file
Level 4 file
Level 4 ... files
代码删除最后一个文件夹中的所有文件,然后删除最后一个文件夹。此文件夹不会消失,但会一直保留到程序结束。因此,应用必须锁定此文件。
每个目录都是为来自文件系统的事件注册的(使用path.register(watcher)。在删除之前,我从文件夹中删除了这个注册。但是锁似乎不会被删除。
您对此问题有任何解决方案建议吗?
提前谢谢。
基督教