引言
今天学习hadoop的删除方法时发现一个问题:
如图,delete(Path, boolean),后面boolean参数的含义是什么,true和false有什么区别。为此,我查阅了官方文档并且检验了一下。

官方文档解释


这是官方文档的表述,首先文档版本是3.3.1,
在该版本中delete(Path f)已经被标注弃用(Deprecated. )。
而是被delete(Path, boolean)代替了,官方给出boolean表示是否递归(recursive)。
recursive- 如果 path 是一个目录并设置为 true,则删除该目录,否则会引发异常。对于文件,递归可以设置为 true 或 false。
简单来说就是如果删除的是目录(文件夹)只能用true,接下来进行测试检验。
测试检验
①第一步
window下,在新建一个文件夹testFolder在里面 再建一个文件夹folder2 再存放test.txt
![]()


②第二步
将文件夹上传集群,建立链接和关闭链接代码省略。
@Test
public void put() throws IOException, InterruptedException {
//2.操作集群
fileSystem.copyFromLocalFile(new Path("D:\\testFolder"),
new Path("/"));
}
上传成功后如图:
③第三步
使用delete(Path, boolean) 先使用false
@Test
public void delete() throws IOException, InterruptedException {
//2.操作集群
fileSystem.delete(new Path("/testFolder"),false);
}
结果:报错,说这个目录文件不是空的。

所以文件夹下面还有东西,不能使用false删除,只能使用true递归删除目录下的东西。
其他
另外,delete(Path f)方法在idea中显示,但是还是可以成功执行的(我的hadoop版本是3.1.3)

“求知若饥、虚心若愚!”
“求知若饥、虚心若愚!”
“求知若饥、虚心若愚!”
本文介绍了Hadoop中删除文件或目录的方法,重点解析了delete(Path, boolean)方法中boolean参数的作用。该参数用于指定是否递归删除,当删除的是非空目录时,必须设置为true。通过实际测试,演示了在Windows环境下,如何删除包含子文件夹和文件的目录,并遇到的问题及解决方案。

510

被折叠的 条评论
为什么被折叠?



