如何用Java中的内容删除整个目录? 我尝试了一些代码,但它不起作用。
public static void removeRecursive(Path path) throws IOException
{
Files.walkFileTree(path, new SimpleFileVisitor<Path>()
{
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs)
throws IOException
{
Files.delete(file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException
{
// try to delete the file anyway, even if its attributes
// could not be read, since delete-only access is
// theoretically possible
Files.delete(file);
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException
{
if (exc == null)
{
Files.delete(dir);
return FileVisitResult.CONTINUE;
}
else
{
// directory iteration failed; propagate exception
throw exc;
}
}
});
}
它抛出错误:
D:\ MainDir \ chantier:Erreur de lecture。 字符串索引超出范围:-1
这是我的道路 d:\ MAINDIR \ CH \地块\卷宗\ mail.zip
我想用他的内容删除目录ch \ Lot \ dossier \ mail.zip 但我的功能只删除\ dossier \ mail.zip并抛出提到的错误
Ps:我作为输入文件给出D:\ MainDir \ ch
提前致谢
答案 0 :(得分:1)
在目录中,您需要为每个文件执行此操作。您可以检查.isDirectory(),如果是,则从.listFiles()循环遍历每个文件,直到您完成传递给方法的根目录内的所有内容。
Java 8现在也提供了Files.walk来更轻松地完成这项工作,请查看文档here。