package com.mongo.text;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCursor;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoDatabase;
import com.mongodb.gridfs.GridFS;
import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSInputFile;
public class GridFSDemo {
private static final String host = "10.4.66.195";
private static final int port = 27017;
private static final String userName = "luhailong";
private static final String password = "luhailong";
private static final String dataBaseName = "demoDB";
private static final String tableName = "user_gridfs";
public static void main(String[] args) throws FileNotFoundException {
// TODO Auto-generated method stub
MongoClient mongoClient = null;
// ServerAddress()两个参数分别为 服务器地址 和 端口
ServerAddress serverAddress = new ServerAddress(host, port);
List<ServerAddress> addrs = new ArrayList<ServerAddress>();
addrs.add(serverAddress);
// MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码
MongoCredential credential = MongoCredential.createScramSha1Credential(
userName, dataBaseName, password.toCharArray());
List<MongoCredential> credentials = new ArrayList<MongoCredential>();
credentials.add(credential);
// 第二种方式:MongoClient 参数解析:第一个参数里是地址跟端口的集合,第二个参数是安全验证集合
mongoClient = new MongoClient(addrs, credentials);
// 连接到数据库
// MongoDatabase mongoDatabase = mongoClient.getDatabase(dataBaseName);
DB db = mongoClient.getDB(dataBaseName);
System.out.println("Connect to database successfully");
// 创建GridFS
GridFS gridFS = new GridFS(db);
// 添加
addGridFS(gridFS);
// 删除
//dropGridFS(gridFS, "");
// 查询
queryGridFS(gridFS);
// 关闭MongoDB
mongoClient.close();
}
/**
* 删除
* */
public static void dropGridFS(GridFS gridFS, String _id) {
// 获取所有文件
DBCursor fileList = gridFS.getFileList();
// 循环删除每条数据
while (fileList.hasNext()) {
gridFS.remove(new BasicDBObject("_id", fileList.next().get("_id")));
}
// 根据文件_id删除单个文件
gridFS.remove(new BasicDBObject("_id", _id));
}
/**
* 查询
* */
public static void queryGridFS(GridFS gridFS) {
// 获取files集合里所有数据
DBCursor fileList = gridFS.getFileList();
System.out.println("输出files集合中所有数据:");
// 循环输出所有数据
while (fileList.hasNext()) {
System.out.println(fileList.next());
}
}
/**
* 添加
*
* @throws FileNotFoundException
* */
public static void addGridFS(GridFS gridFS) throws FileNotFoundException {
File file = new File(System.getProperty("user.home")
+ "/ssh2_test.zip");
// 创建文件输入流
FileInputStream fileInputStream = new FileInputStream(file);
// 添加文件流到GridFS
GridFSInputFile createFile = gridFS.createFile(fileInputStream);
// 定义上传文件的文件名
createFile.put("filename", "ssh2_test.zip");
// 定义上传文件类型
createFile.put("contentType", "application/zip");
// 保存文件
createFile.save();
// 通过文件上传ID获取文件信息
GridFSDBFile findOne = gridFS.findOne(new BasicDBObject("_id",
createFile.getId()));
System.out.println("添加的数据如下:");
System.out.println(findOne);
}
}