全部博文(167)
分类: Java
2010-02-08 10:35:12
MogileFS写操作主要调用介绍:
MogileFS类介绍
要对远程的MogileFS服务端进行操作,首先需要创建一个MogileFS类;
MogileFS mfs = new MogileFS(String domain, String trackerStrings[], boolean connectNow);
String domain : MogileFS服务端的domain名字;
String trackerStrings[] : mogileFS服务端track的ip加端口;
boolean connectNow : 是否现在进行连接。
例如:
MogileFS mfs = new MogileFS("funtestdomain",
new String[] { "192.168.74.9:6001" }, true);
创建MogileFS类可能抛出的异常有:
NoTrackersException, BadHostFormatException
MogileFS客户端输出流的生成:
要把客户端中的图片或文件上传到MogileFS的服务端中需要创建一个输出流,当创建MogileFS对象成功(暂命名该对象的名称为mfs)后就能调用newFile方法创一个MogileFS输出流。
public MogileOutputStream newFile(String key, String storageClass,
long byteCount)
String key : 文件上传到服务端后,存储该名字到数据库中作为标识;
String storageClass :接受该文件的storage的class名字。
long byteCount : 文件的长度。
例如:
OutputStream out = mfs.newFile("myjpg","funtestclass", file.length());
可能抛出的异常有:
NoTrackersException,TrackerCommunicationException,StorageCommunicationException
MogileFS客户端输出流(MogileOutputStream)输出动作的调用:
MogileOutputStream是继承了OutputStream,该类的构造方法如下:
MogileOutputStream(Backend backend, String domain, String fid,
String path, String devid, String key,
long totalBytes)
可能抛出的异常有:
MalformedURLException,StorageCommunicationException
在这里我使用了对象的上传对象方法,所以对这个类就不作介绍了,只介绍写的方法:
1.write(byte[])
public void write(byte[] b) throws IOException
2.write(int)
public void write(int b) throws IOException
3.write(byte[],int,int)
public void write(byte[] b, int off, int len) throws IOException
整个个过程如下:
OutputStream out = mfs.newFile(key,tclass, file.length());
FileInputStream in = new FileInputStream(file);
byte[] buffer = new byte[1024];
int count = 0;
System.out.println("StartTime:"+d);
while ((count = in.read(buffer)) >= 0) {
out.write(buffer, 0, count);
}
输出流的另外两个方法:flush()刷新缓冲区;close()关闭输出流。
依靠以上两个东西就能够对MogileFS进行写的操作了。
MogileFS类其它相关的方法
1.delete(String key)删除服务器上相应的文件;
public void delete(String key)
可能抛出的异常有:
NoTrackersException,NoTrackersException
2. getFile(String key,File destination)下载文件
public File getFile(String key, File destination)
可能抛出的异常有:
NoTrackersException, TrackerCommunicationException,IOException, StorageCommunicationException
getFileStream(String key)
public InputStream getFileStream(String key)获取下载文件的输入流
可能抛出的异常有:
NoTrackersException,TrackerCommunicationException,StorageCommunicationException
getFileBytes(String key)获取文件的输入流
public byte[] getFileBytes(String key)
可能抛出的异常有:
TrackerCommunicationException,IOException,StorageCommunicationException
3.setMaxRetries(int maxRetries) 设置最大的失败重试数
4.Rename(String fromKey, String toKey)
public void rename(String fromKey, String toKey)
可能抛出的异常有:
NoTrackersException
5.sleep(int seconds)MogileFS有自己的睡眠线程
public void sleep(int seconds)
可能抛出的异常有:
NoTrackersException,TrackerCommunicationException
6.setRetryTimeout(int retrySleepTime) 设置连接等待的时间
public void setRetryTimeout(int retrySleepTime)
这次MogileFS方法的调用如下:
mfstest.jar Domain class ip:port key Picture_Path
测试环境:
当前内部测试环境的接口为192.168.74.9:6001(MogileFS Tracker),java程序通过调用该接口可进行写入文件操作。
如下 :(登录192.168.74.15,执行如下命令)
(/data/tmp/100K_File.tmp为本地源文件路径;test.jpg为上传后文件名,即key)
/usr/java/jdk1.6.0_16/bin/java -jar /data/tmp/mfstest.jar tdomain tclass 192.168.74.9:6001 test.jpg /data/tmp/100K_File.tmp