在学习java操作hdfs进行文件下载时,一直报空指针异常的错误,
原代码:
@Test
public void getFileFornHDFS() throws IOException {
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
// 3. 调用API进行文件下载
fs.copyToLocalFile(true,new Path("/acc.txt"),
new Path("D:\\springBootcode\\HdfsDome\\hdfs\\src"));
// 4. 关闭资源
fs.close();
}
后来调试多次,代码修改成:
@Test
public void getFileFornHDFS() throws IOException {
Configuration conf = new Configuration();
FileSystem fs = FileSystem.get(conf);
// 3. 调用API进行文件下载
fs.copyToLocalFile(false,new Path("/acc.txt"),
new Path("D:\\springBootcode\\HdfsDome\\hdfs\\src"),true);
// 4. 关闭资源
fs.close();
}
问题解决!!!
原因:
copyToLocalFile方法第一个参数和最后一个解析:
第一个参数控制下载完成后是否删除源文件,默认是 true,即删除;
最后一个参数表示是否将 RawLocalFileSystem 用作本地文件系统;
RawLocalFileSystem 默认为 false,通常情况下可以不设置,
但如果你在执行时候抛出 NullPointerException 异常,则代表你的文件系统与程序可能存在不兼容的情况 (window 下常见),
此时可以将 RawLocalFileSystem 设置为 true