日期:2014-05-16  浏览次数:20437 次

mongodb保存文件要关闭流吗?
可能有人发现,用MongoDB保存一个文件后文件一直被占用的情况,本人证实,这个是jar包问题,代码如下:
File imageFile = new File(filePath);
GridFS gfsPhoto = new GridFS(mongoTemplate.getDb(), connName);
GridFSInputFile gfsFile = null;
FileInputStream fileInputStream = new FileInputStream(imageFile);
String fileName = imageFile.getName();

/**
* 用这种而不用gfsPhoto.createFile(imageFile)是因为此Jar包Bug,
* 导致文件流未关闭而无法删除文件,估计是在save后没有关闭FileInputStream
*/
gfsFile = gfsPhoto.createFile(fileInputStream, fileName);
gfsFile.setFilename(newFileName);
gfsFile.save();
// gfsFile.getOutputStream().flush();
// gfsFile.getOutputStream().close();

if (!(null == fileInputStream)) {
fileInputStream.close();
log.info("添加PDF文件中关闭了文件输入流!");
}

// 删除pdf文件
if (imageFile.delete()) {
log.info("删除pdf文件成功");
} else {
log.info("删除pdf文件失败");
}
return;

自恋一下@_@