Mew v1.1.3版本的 MD5 值为:2c97fc89b634adccdf2e096067417e16
以下内容为反编译后的 CLI.java 源代码,内容仅作参考
package com.mongodb.gridfs;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoClient;
import com.mongodb.util.Util;
import java.io.File;
import java.security.DigestInputStream;
import java.security.MessageDigest;
public class CLI {
private static GridFS gridFS;
private static String host = "127.0.0.1";
private static String db = "test";
private static Mongo mongo = null;
private static void printUsage() {
System.out.println("Usage : [--bucket 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 filename1 filename2 : gets filename1 from store and sends to filename2");
System.out.println(" md5 filename : does an md5 hash on a file in the db (for testing)");
}
private static Mongo getMongo() throws Exception {
if (mongo == null) {
mongo = new MongoClient(host);
}
return mongo;
}
private static GridFS getGridFS() throws Exception {
if (gridFS == null) {
gridFS = new GridFS(getMongo().getDB(db));
}
return gridFS;
}
public static void main(String[] args) throws Exception {
if (args.length < 1) {
printUsage();
return;
}
for (int i = 0; i < args.length; i = i + 1 + 1) {
String s = args[i];
if (s.equals("--db")) {
db = args[i + 1];
} else if (s.equals("--host")) {
host = args[i + 1];
} else {
if (s.equals("help")) {
printUsage();
return;
}
if (s.equals("list")) {
GridFS fs = getGridFS();
System.out.printf("%-60s %-10s%n", "Filename", "Length");
DBCursor fileListCursor = fs.getFileList();
while (fileListCursor.hasNext()) {
try {
DBObject o = fileListCursor.next();
System.out.printf("%-60s %-10d%n", o.get("filename"), Long.valueOf(((Number) o.get("length")).longValue()));
} finally {
fileListCursor.close();
}
}
return;
}
if (s.equals("get")) {
GridFS fs2 = getGridFS();
String fn = args[i + 1];
GridFSDBFile f = fs2.findOne(fn);
if (f == null) {
System.err.println("can't find file: " + fn);
return;
} else {
f.writeTo(f.getFilename());
return;
}
}
if (s.equals("put")) {
GridFS fs3 = getGridFS();
GridFSInputFile f2 = fs3.createFile(new File(args[i + 1]));
f2.save();
f2.validate();
return;
}
if (s.equals("md5")) {
GridFS fs4 = getGridFS();
String fn2 = args[i + 1];
GridFSDBFile f3 = fs4.findOne(fn2);
if (f3 == null) {
System.err.println("can't find file: " + fn2);
return;
}
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.reset();
int read = 0;
DigestInputStream is = new DigestInputStream(f3.getInputStream(), md5);
while (is.read() >= 0) {
try {
read++;
int r = is.read(new byte[17]);
if (r < 0) {
break;
} else {
read += r;
}
} catch (Throwable th) {
is.close();
throw th;
}
}
is.close();
byte[] digest = md5.digest();
System.out.println("length: " + read + " md5: " + Util.toHex(digest));
return;
}
System.err.println("unknown option: " + s);
return;
}
}
}
}