MultipartFile文件直接通过数据流的方式上传文件到HDFS
要求文件不能经过缓存落盘,直接数据流的方式上传文件到hdfs



最后记得flush一下

/**
* 文件流直接上传至HDFS
*
* @param srcFile 上传文件源文件,
* @param destPath fs的目标路径
*/
public void upoldFileToHDFS(MultipartFile srcFile, String destPath) {
log.info("【文件上传】 开始上传, 上传文件路径: {} , 文件名: {} , 文件大小: {}",
destPath,srcFile.getOriginalFilename(),srcFile.getSize());
if (srcFile.getSize()<0){
log.info("error");
}
try {
InputStream inputStream = srcFile.getInputStream();
FSDataOutputStream fsDataOutputStream = fs.create(
new Path(destPath+srcFile.getOriginalFilename()));
System.out.println(destPath+srcFile.getOriginalFilename());
byte[] b = new byte[1024 * 1024];
int read = 0;
while ((read = inputStream.read(b)) > 0) {
fsDataOutputStream.write(b, 0, read);
}
fsDataOutputStream.flush();
inputStream.close();
fsDataOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}

本文介绍如何在Java应用中,利用MultipartFile对象不经过本地缓存,直接通过数据流将文件上传到HDFS的实现方法。重点强调了避免文件落地,直接进行流操作并确保数据完整性的关键步骤。
1万+

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



