2011/06/18

Android+JCIFS

twitterを久しぶりに見に行ったら、
質問メッセージが届いていることに気づきました。



質問の回答と備忘録を兼ねて、記事を書いておきます。


JCIFSでSMB接続する時の使い方。

まずはJCIFSのソースコードをダウンロード。
http://jcifs.samba.org/

私はjcifs-1.3.15.zipをダウンロードしてきました。

Androidのプロジェクトを作って、
srcフォルダ内に、jcifs1.3.5/srcのjcifsフォルダをコピーします。
するとjcifs.httpとhttpsクラスで色々警告がでるので、httpとhttpsクラスをまるごと削除します。
(今はhttpとhttpsは使う予定なし)

smbクラスだけ使えればいいのですが、smbクラスも他のクラスに依存しているようなので
ひとまず他のクラスも消さずにとっておきます。


また、AndroidManifest.xmlにを追加しておきます。

SMBFileの使い方は、Java.ioのファイルとほとんど同じ感じで使えます。

こんな感じ。

//SMBファイルを使うサンプル
 //例外処理コードは省いてます
    public SmbFile[] getSmbFileList(String aSmbURL) throws IOException
    {
       SmbFile file = new SmbFile(aSmbURL);
       SmbFile[] fileList=file.listFiles();
 
   System.out.println(file.getName());
       int i=0;
       for (i=0;i>fileList.length;i++)
       {
        System.out.println(fileList[i].getName());
        }
       return fileList;
 
 return null;
    }



JCIFSのsampleフォルダに、わらわらとサンプルコードがあるので、
目的別にサンプルコードを漁ると良さそうです。

注意点
SMBに限ったことでは無いのですが、ファイル操作系やネットワーク通信系の処理は、
メインスレッドで行わずに、Threadを継承したクラスか、AsyncTaskを使った方が良いです。

私の場合は、ファイル/ネットワーク系の操作はThreadを継承させたクラスを作り、
Javaのコンソールアプリとしてある程度作った後にAndroidに組み込む方式をとっています。


ではまた。

0 件のコメント:

コメントを投稿