尝试在Java中java.nio.file.DirectoryNotEmptyException递归删除从Delete目录中删除的递归删除方法中的偶然问题
代码(归功于@TrevorRobinson):
static void removeRecursive(Path path) throws IOException {
Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
final Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public FileVisitResult visitFile(Path file,
BasicFileAttributes attrs) throws IOException {
logger.warn("Deleting " + file.getFileName());
Files.delete(file);
logger.warn("DELETED " + file.getFileName());
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) {
// try to delete the file anyway, even if its attributes could
// not be read, since delete-only access is theoretically possible
// I NEVER SEE …Run Code Online (Sandbox Code Playgroud) 需要检查我使用的文件/目录的权限
//filePath = path of file/directory access denied by user ( in windows )
File file = new File(filePath);
file.canWrite();
file.canRead();
file.canExecute();
Run Code Online (Sandbox Code Playgroud)
所有三个都返回true但无法删除任何文件/目录
我正在尝试使用删除文件 File.delete()
这是我的代码:
File stagingFile = new File(stagingPath,configFileName);
FileOutputStream fos = new FileOutputStream(stagingFile);
int c = 0;
while((c=input.read())!=-1){
fos.write(c);
}
fos.flush();
fos.close();
input.close();
Run Code Online (Sandbox Code Playgroud)
执行一些操作后,我这样做:
boolean delete = stagingFile.delete();
Run Code Online (Sandbox Code Playgroud)
delete返回false.据我所知,我已经关闭了与之相关的所有处理程序stagingFile.我不确定为什么它不会被删除