java-MongoDB存入文件时奇怪的异常
来源:互联网 发布:量子计算处理器 知乎 编辑:程序博客网 时间:2024/05/22 07:58
#pre
本来把打算文件直接放到服务器上,不过好像直接把文件塞进mongodb更好一些
就打算试一试,老样子百度关键字,看了一些博客之后(= =是不是应该先看官方API)
整理成一段了会报错的代码←_←
public static void test() throws IOException {
File fin=new File("D:/视听资源/音乐/rm/ruki.mp3");
MongoClient mc=new MongoClient();
DB db=new DB(mc,"test");
GridFS gridFS=new GridFS(db);
GridFSInputFile gridFSInputFile =gridFS.createFile(fin);
gridFSInputFile.save();
}
#报错
Exception in thread "main" com.mongodb.MongoException: couldn't save chunks
at com.mongodb.gridfs.GridFSInputFile.save(GridFSInputFile.java:180)
at com.mongodb.gridfs.GridFSInputFile.save(GridFSInputFile.java:160)
at com.listentome.DB.Operations.test.test(test.java:30)
at com.listentome.DB.Operations.test.main(test.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Caused by: java.io.IOException: Stream Closed
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:272)
at com.mongodb.gridfs.GridFSInputFile._readStream2Buffer(GridFSInputFile.java:307)
at com.mongodb.gridfs.GridFSInputFile.saveChunks(GridFSInputFile.java:228)
at com.mongodb.gridfs.GridFSInputFile.save(GridFSInputFile.java:178)
... 8 more
at com.mongodb.gridfs.GridFSInputFile.save(GridFSInputFile.java:180)
at com.mongodb.gridfs.GridFSInputFile.save(GridFSInputFile.java:160)
at com.listentome.DB.Operations.test.test(test.java:30)
at com.listentome.DB.Operations.test.main(test.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:134)
Caused by: java.io.IOException: Stream Closed
at java.io.FileInputStream.readBytes(Native Method)
at java.io.FileInputStream.read(FileInputStream.java:272)
at com.mongodb.gridfs.GridFSInputFile._readStream2Buffer(GridFSInputFile.java:307)
at com.mongodb.gridfs.GridFSInputFile.saveChunks(GridFSInputFile.java:228)
at com.mongodb.gridfs.GridFSInputFile.save(GridFSInputFile.java:178)
... 8 more
看错误日志发现是在调用save函数的时候文件流关闭了
然后就着这个错误搜啊搜没找着符合这个情况的解释←_←
#然后为什么会发生Stream Closed此等奇怪的错误
不小心发现了gridFS.createFile这个方法重载了好几个,然后就把上边那一行改成了
GridFSInputFile gridFSInputFile =gridFS.createFile(new FileInputStream(fin));
然后好了←_←,为什么会这样,传入File和传入InputStream应该一样吧
然后好了←_←,为什么会这样,传入File和传入InputStream应该一样吧
#点进源码看了看
public GridFSInputFile createFile(File file) throws IOException {
FileInputStream fileInputStream = new FileInputStream(file);
GridFSInputFile var3;
try {
var3 = this.createFile(fileInputStream, file.getName(), true);
} finally {
fileInputStream.close(); //←_←就是这里,它自己给关了所以save的时候报错了! }
return var3;
}
public GridFSInputFile createFile(InputStream in) {
return this.createFile(in, (String)null);
}
0 0
- java-MongoDB存入文件时奇怪的异常
- Java异常的奇怪问题
- 奇怪的ODBC异常
- 如何向MongoDB中存入文件?
- jsoup解析文件存入本地mongodb数据库
- struts2 同时上传多个文件的奇怪异常
- 生成项目异常日志存入xml文件
- tomcat抛出的奇怪异常
- phoenix查询奇怪的异常
- 文件操作的奇怪?
- 奇怪的Core文件
- 奇怪的cab_xxxx_x文件
- 启动进程时命令行超长会引起奇怪的异常
- java文件出现奇怪的符号不影响编译
- 奇怪的java日期
- java的奇怪现象
- 奇怪的分式Java
- 奇怪的捐赠java
- POJ 2031 Building a Space Station
- shell 函数返回值接收问题
- 如何写好代码
- iOS开发 - 网络数据安全加密(MD5)
- LSF系统介绍
- java-MongoDB存入文件时奇怪的异常
- ContentProvider与ContentResolver使用
- LSF系统
- oracle10g/11g 新特性八(SQL性能调优)
- 程序员技术练级攻略
- 理解python GIL 全局锁
- JAVA读取属性文件的几种方法
- 字符集与字符编码
- 远程无法访问tomcat