引言
今天学习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)
“求知若饥、虚心若愚!”
“求知若饥、虚心若愚!”
“求知若饥、虚心若愚!”