mongodb基础系列——java操作mongodb实现图片文件功能
2016-04-02 19:43
896 查看
mongodb支持多种语言,并且提供了多种语言的驱动。
前提:下载相应的驱动:官网上下载:http://central.maven.org/maven2/org/mongodb/mongo-java-driver/
本人使用mongo-2.10.1.jar版本:
mongodb操作文件,主要是通过GridFS类。存储文件主要存放在fs中了,其中的fs是数据库默认的。
并且GridFS是直接与数据库打交道,与collection集合无关。
具体的操作如下:其中有相应的注释:
[html] view
plain copy
print?
package com.mongo.dao;
import java.io.File;
import java.util.List;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.gridfs.GridFS;
import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSInputFile;
/**
* 使用mongodb对文件的读取操作
* @author lhy
*
*/
public class GridFSTest {
public static void main(String[] args) throws Exception {
//saveFile();
readFile();
}
/**
* 存储文件
*/
public static void saveFile() throws Exception{
//连接服务器
Mongo mongo=new Mongo();
//连接数据库
DB db=mongo.getDB("testGridFS");
//文件操作是在DB的基础上实现的,与表和文档没有关系
GridFS gridFS=null;
gridFS=new GridFS(db);
String fileName="vltest.log";
File readFile=new File("d:/"+fileName);
GridFSInputFile mongofile=gridFS.createFile(readFile);
//可以再添加属性
mongofile.put("path","d:/"+fileName);
//保存
mongofile.save();
或者用byte[]保存图片
byte[]tempbytes;
..........
InputStream inputImage = new ByteArrayInputStream(tempbytes);
GridFS gridFS=null;
gridFS=new GridFS(db1);
GridFSInputFile gridFSInputFile = gridFS.createFile(inputImage);
gridFSInputFile.setId("999");
gridFSInputFile.setFilename("java学习");
gridFSInputFile.save();
}
/**
* 读文件,读到磁盘上
* @throws Exception
*/
public static void readFile() throws Exception{
//链接服务器
Mongo mongo=new Mongo();
//连接数据库
DB db=mongo.getDB("testGridFS");
GridFS gridFs=null;
gridFs=new GridFS(db);
//查找条件
DBObject query=new BasicDBObject();
//查询的结果:
List<GridFSDBFile> listfiles=gridFs.find(query);
GridFSDBFile gridDBFile=listfiles.get(0);
//获得其中的文件名
//注意 : 不是fs中的表的列名,而是根据调试gridDBFile中的属性而来
String fileName=(String)gridDBFile.get("filename");
System.out.println("从Mongodb获得文件名为:"+fileName);
File writeFile=new File("d:/"+fileName);
if(!writeFile.exists()){
writeFile.createNewFile();
}
//把数据写入磁盘中
//查看相应的提示
gridDBFile.writeTo("d:/a.txt");
//写入文件中
gridDBFile.writeTo(writeFile);
或者
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
GridFSDBFile gridFSDBFile = gridFS.findOne(query);
InputStream in=gridFSDBFile.getInputStream();
//InputStream转换为InputStreambyte[]
while ((rc = in.read(buff, 0, 100)) > 0) {
swapStream.write(buff, 0, rc);
}
byte[] in_b = swapStream.toByteArray();
File file=new File("E:\\cc\\44.jpg");
FileOutputStream out=new FileOutputStream(file);
out.write(in_b);
}
}
其中图片也是这么存储的,把图片当作文件来存储。
运行上述存储结果如下:
前提:下载相应的驱动:官网上下载:http://central.maven.org/maven2/org/mongodb/mongo-java-driver/
本人使用mongo-2.10.1.jar版本:
mongodb操作文件,主要是通过GridFS类。存储文件主要存放在fs中了,其中的fs是数据库默认的。
并且GridFS是直接与数据库打交道,与collection集合无关。
具体的操作如下:其中有相应的注释:
[html] view
plain copy
print?
package com.mongo.dao;
import java.io.File;
import java.util.List;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.gridfs.GridFS;
import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSInputFile;
/**
* 使用mongodb对文件的读取操作
* @author lhy
*
*/
public class GridFSTest {
public static void main(String[] args) throws Exception {
//saveFile();
readFile();
}
/**
* 存储文件
*/
public static void saveFile() throws Exception{
//连接服务器
Mongo mongo=new Mongo();
//连接数据库
DB db=mongo.getDB("testGridFS");
//文件操作是在DB的基础上实现的,与表和文档没有关系
GridFS gridFS=null;
gridFS=new GridFS(db);
String fileName="vltest.log";
File readFile=new File("d:/"+fileName);
GridFSInputFile mongofile=gridFS.createFile(readFile);
//可以再添加属性
mongofile.put("path","d:/"+fileName);
//保存
mongofile.save();
或者用byte[]保存图片
byte[]tempbytes;
..........
InputStream inputImage = new ByteArrayInputStream(tempbytes);
GridFS gridFS=null;
gridFS=new GridFS(db1);
GridFSInputFile gridFSInputFile = gridFS.createFile(inputImage);
gridFSInputFile.setId("999");
gridFSInputFile.setFilename("java学习");
gridFSInputFile.save();
}
/**
* 读文件,读到磁盘上
* @throws Exception
*/
public static void readFile() throws Exception{
//链接服务器
Mongo mongo=new Mongo();
//连接数据库
DB db=mongo.getDB("testGridFS");
GridFS gridFs=null;
gridFs=new GridFS(db);
//查找条件
DBObject query=new BasicDBObject();
//查询的结果:
List<GridFSDBFile> listfiles=gridFs.find(query);
GridFSDBFile gridDBFile=listfiles.get(0);
//获得其中的文件名
//注意 : 不是fs中的表的列名,而是根据调试gridDBFile中的属性而来
String fileName=(String)gridDBFile.get("filename");
System.out.println("从Mongodb获得文件名为:"+fileName);
File writeFile=new File("d:/"+fileName);
if(!writeFile.exists()){
writeFile.createNewFile();
}
//把数据写入磁盘中
//查看相应的提示
gridDBFile.writeTo("d:/a.txt");
//写入文件中
gridDBFile.writeTo(writeFile);
或者
ByteArrayOutputStream swapStream = new ByteArrayOutputStream();
GridFSDBFile gridFSDBFile = gridFS.findOne(query);
InputStream in=gridFSDBFile.getInputStream();
//InputStream转换为InputStreambyte[]
while ((rc = in.read(buff, 0, 100)) > 0) {
swapStream.write(buff, 0, rc);
}
byte[] in_b = swapStream.toByteArray();
File file=new File("E:\\cc\\44.jpg");
FileOutputStream out=new FileOutputStream(file);
out.write(in_b);
}
}
其中图片也是这么存储的,把图片当作文件来存储。
运行上述存储结果如下:
相关文章推荐
- 【MongoDB】The Access control of mongodb
- mongodb中索引的使用
- Mongodb 查询相关
- Scala连接mongodb数据库
- 百万级别数据,数据库Mysql,Mongodb,Hbase如何选择?
- [转] Creating a Simple RESTful Web App with Node.js, Express, and MongoDB
- mongodb安装
- Mongodb 3.2 Manual阅读笔记:CH9 存储
- mongodb的安装,开启,连接
- mongodb添加远程用户连接
- mongodb安装
- centos下mongodb3.2数据库的备份与恢复初步
- php的mongodb扩展插件安装
- MongoDB的安装与配置
- yum 安装mongodb
- mongoDB——wiredTiger副本集模型的成员角色
- MongoDB 日志太大怎么办?
- mongodb的安装,开启,连接
- mongoDB——split&balance操作
- mongoDB——read&write操作