Chinaunix首页 | 论坛 | 博客
  • 博客访问: 834420
  • 博文数量: 167
  • 博客积分: 7173
  • 博客等级: 少将
  • 技术积分: 1671
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-04 23:07
文章分类

全部博文(167)

文章存档

2018年(1)

2017年(11)

2012年(2)

2011年(27)

2010年(88)

2009年(38)

分类: 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:6001MogileFS 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

阅读(2896) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~