我也遇到了这个问题,看评论区有小伙伴说前后各加上一个参数就好了,试了一下还真是
先来看一下该方法的说明
/**
* The src file is under FS, and the dst is on the local disk. Copy it from FS
* control to the local dst name. delSrc indicates if the src will be removed
* or not. useRawLocalFileSystem indicates whether to use RawLocalFileSystem
* as local file system or not. RawLocalFileSystem is non crc file system.So,
* It will not create any crc files at local.
*
public void copyToLocalFile(boolean delSrc, Path src, Path dst,boolean useRawLocalFileSystem)
第一个参数 delSrc:是否删除掉源目录
最后一个参数RawLocalFileSystem:是否使用本地文件系统
可能在win下就是要开启使用本地文件系统吧。
除了直接使用拷贝方法,还可以通过流的方式来进行下载,下面是我的代码
//从hdfs拷贝文件到本地:下载 @Test public void copyToLocalFile() throws IOException { // fileSystem.copyToLocalFile(false,new Path("/hdfsapi/test/mp4"), // new Path("C:\\Users\\naimehao\\Pictures\\testVV.mp4"),true); FSDataInputStream in = fileSystem.open(new Path("/hdfsapi/test/mp4"), 4096); OutputStream out = new BufferedOutputStream(new FileOutputStream(new File("C:\\Users\\naimehao\\Pictures\\testVV.mp4"))); IOUtils.copyBytes(in, out, 4096); }
试验了,下载后还能打开播放呢~
希望能帮到大家
好人一生平安:)