2010/08/25

AndroidでDropbox API (3) ファイルの取得,保存

デベロッパーフォーラムにファイル取得のサンプルと,ファイルリストの取得に使うmetadata関数の解説が落ちてました.
DROPBOX FORUMS » DEVELOPERS : IllegalStateException: Content has been consumed
Android: arguments to api.metafdata

その他,アップロードも含めてある程度使い方のわかった関数を載せときます.
全てDropboxAPIクラスの関数です.

ファイルの取得(ダウンロード)
getFileStream(String arg0, String arg1, String arg2)
arg0は"dropbox"で固定
arg1はDropboxのルートフォルダから見たファイルのパス.ルート直下の"test.txt"というファイルなら"/test.txt"という具合です.
arg2は不明ですが,nullで動きます.

この返り値であるFileDownloadクラスのメンバー変数isがInputStreamクラスなので,通常のファイル読み込みの形で内容を読み込めます.上のリンク先に詳しいコードが載っています.

ファイルの保存(アップロード)
putFile(String arg0, String arg1, File file)
arg0は"dropbox"で固定
arg1はDropboxのルートから見たフォルダのパス("/android"等).フォルダはなければ作ってくれます.ルート直下の場合からの文字列""です.
fileは保存したいファイル.このファイルのファイル名で保存されます.

アップロードするファイルはローカルに存在する必要があります.
また,フォルダ名とファイル名を含めた最終的なファイルが既に存在する場合,既存のファイルを上書きします.

ファイルの削除
delete(String arg0, String arg1)
arg0は"dropbox"で固定
arg1は消したいファイルのパスです.フォルダも消せます.フォルダ内にファイルがあっても,問答無用でフォルダごと消します.

フォルダの作成
createFolder(String arg0, String arg1)
arg0は"dropbox"で固定
arg1は作りたいフォルダの名前です.

ファイルリストの取得
metadata(String arg0, String arg1, int limit, String arg3, boolean list)
arg0は"dropbox"で固定
arg1はファイルリストを取得したいフォルダの名前です.ルートであれば""です.
limitは,リストに返す最大ファイル数です.適当に大きな数を入れておけば問題ありません.
arg3はhashらしいのですが,よくわかりません.とりあえずnullで動きます.
listはフォルダ内に含まれるファイルの内容を返すかです.ファイルリストを取得する場合はtrueです.

この関数はDropboxAPI.Entryクラスを返します.返されたEntryクラス内のcontentsというメンバー変数がDropboxAPI.EntryクラスのArrayListになっており,この中にarg1で指定したフォルダの下にあるフォルダとファイルの情報が入ります.
ルート直下のフォルダ・ファイル情報を得る場合は下のようなコードになります.

DropboxAPI.Entry entry = api.metadata("dropbox", "", 100, null, false);
int n = entry.contents.size();
for(int i = 0; i < n; i++){
Log.i("path",entry.contents.get(i).path);
}

これでだいたい基本的な事はできそうです.

2 件のコメント:

  1. このコメントは投稿者によって削除されました。

    返信削除
  2. ちょっと前のエントリみたいですが、すごく参考になりました!

    最後の部分
    DropboxAPI.Entry entry = api.metadata("dropbox", "", 100, null, false);

    false だと何も取れない…ですよね?
    ちょっとはまりましたけど、一連のエントリのみのマニュアル無しでほぼコードが組めました!

    返信削除