为什么要自己做一个呢?
因为mongodb自带的mongofiles到现在也不能操作和查看某个bucket的下的文件, 只能查看和操作fs下的文件. mongo-java-driver中的那个CLI也不能做这个, 甚至连用户名和密码都不能指定.
?
所以不如我们自己做一个吧. 代码如下, 不多说了:
?
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; import com.mongodb.util.Util; import java.io.File; import java.security.DigestInputStream; import java.security.MessageDigest; /** * User: matianyi * Date: 13/05/02 */ public class CLI { /** * Dumps usage info to stdout */ private static void printUsage() { System.out.println("Usage : -h x.x.x.x -u userid -p password -d db -b bucketname action"); System.out.println(" where action is one of:"); System.out.println(" list : lists all files in the store"); System.out.println(" put filename : puts the file filename into the store"); System.out.println(" get filename : gets filename1 from store"); System.out.println(" md5 filename : does an md5 hash on a file in the db (for testing)"); System.out.println(" del filename : delete filename1 from store"); } private static String host = "127.0.0.1"; private static String dbName = "test"; private static String usr = ""; private static String pwd = ""; private static String bucket = ""; private static Mongo _mongo = null; private static Mongo getMongo() throws Exception { if (_mongo == null) { _mongo = new Mongo(host); } return _mongo; } private static GridFS _gridfs; private static GridFS getGridFS() throws Exception { if (_gridfs == null) { DB db1 = getMongo().getDB(dbName); if (!usr.equals("")) { db1.authenticate(usr, pwd.toCharArray()); } if (!bucket.equals("")) { _gridfs = new GridFS(db1, bucket); } else { _gridfs = new GridFS(db1); } } return _gridfs; } public static void main(String[] args) throws Exception { if (args.length < 1) { printUsage(); return; } for (int i = 0; i < args.length; i++) { String s = args[i]; if (s.equals("-d")) { dbName = args[i + 1]; i++; continue; } if (s.equals("-u")) { usr = args[i + 1]; i++; continue; } if (s.equals("-p")) { pwd = args[i + 1]; i++; continue; } if (s.equals("-b")) { bucket = args[i + 1]; i++; continue; } if (s.equals("-h")) { host = args[i + 1]; i++; continue; } if (s.equals("help")) { printUsage(); return; } if (s.equals("list")) { GridFS fs = getGridFS(); System.out.printf("%-60s %-10s\n", "Filename", "Length"); for (DBObject o : fs.getFileList()) { System.out.printf("%-60s %-10d\n", o.get("filename"), ((Number) o.get("length")).longValue()); } return; } if (s.equals("get")) { GridFS fs = getGridFS(); String fn = args[i + 1]; GridFSDBFile f = fs.findOne(fn); if (f == null) { System.err.printl