根据此Java
Doc java.io.File
delete()
方法有限制删除非空目录。 (但是有很多解决方法)。
另一方面,Python
在其自己的虚拟机(类似于JVM
)中运行,名为Interpreter
。它有一个删除这些目录的方法
顺便说一句,可以创建无限递归的目录结构(在Windows和Linux(带符号链接)),这将导致循环。但是,我猜,这不是主要原因,为什么会有例外。
那么,为什么java.io.File
有限制删除非空目录?
修改:为什么低级别系统调用之间没有“rm -rf”和Java
代码之间的层?
编辑:问题不是 ,而是为什么
答案 0 :(得分:0)
它反映了底层C库系统调用的行为。 rmdir
函数也只删除空目录。
答案 1 :(得分:0)
除非明确请求,否则在删除文件/目录的Linux和Windows命令上都不会对子目录执行此操作。例如,在Linux上,您必须使用rm -r
来删除目录树。
Java并没有重新创造世界。 JDK使用不删除目录树的低级系统调用。但是,您可以使用第三方纯Java实用程序来执行此操作。
BTW你无法真正创建无限的目录结构。这是一种幻觉。符号链接只是shell命令可识别的特殊文件。将符号链接删除为常规文件并不遵循它们即使它们引用目录也不是问题。