MogileFS には非公式ではあるが Java クライアントもある。
今回は http://github.com/davidsheldon/java-mogilefs/tree/master にあるライブラリを利用してみることにした。
ファイルの読み書き
取得したファイルの中に、TestMogileFS.java というのがあるので、それを見るとだいたい使い方がわかる。
MogileFS にファイルを格納する場合を抜粋すると以下のような感じ。ちなみに、ここで SimpleMogileFSImpl を使ったのは PooleMogileFSImpl を使うと、newFile の呼び出しでなぜか時間がかかったから。commons-pool 側の問題のように見えたので、とりあえず SimpleMogileFSImpl で試してみたということ。
MogileFS mfs = new SimpleMogileFSImpl("mydomain", new String[] { "192.168.251.61:6001" }); File file = nwe File("/path/to/file"); OutputStream out = mfs.newFile("filekey", "myclass", file.length()); FileInputStream in = new FileInputStream(file); byte[] buffer = new byte[1024]; int count = 0; while ((count = in.read(buffer)) >= 0) { out.write(buffer, 0, count); } in.close(); out.close();
読み込みは以下のような感じ。ちなみに TestMogileFS.java では MogileFS#getFileData なんてのを使うようなコードがコメントアウトされて書かれているけれど、そんなメソッドは存在していない。
File file = new File("/path/to/outputfile"); OutputStream out = new FileOutputStream(file); InputStream in = mfs.getFileStream("filekey"); byte[] buffer = new byte[1024]; int count = 0; while ((count = in.read(buffer)) >= 0) { out.write(buffer, 0, count); } in.close(); out.close();