MongoDB之GridFS CRUD

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);
    }

}

 

转载于:https://my.oschina.net/u/3271403/blog/1186439

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值