スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

JCIFSを使ってWindows共有フォルダをandroidから参照する

案件で、Windowsの共有ファイルをAndroidから読み書きする必要が出てきたので、実現方法を調べてみた。

どうやら、JCIFSというライブラリを使えば簡単にWindowsの共有ファイルにアクセスできることがわかった。

CIFSとは

そもそもJCIFSの「CIFS(Common Internet File System)」ってのは、もともとWindowsのファイル共有サービスで利用されているプロトコル「SMB」を拡張して、Windows以外のOSやアプリケーションソフトでも利用できるようにものだそうだ。知らんかったわ…、勉強になりやす。


JCIFSを使ってみる

JCIFSのライブラリはhttp://jcifs.samba.org/からダウンロードできる。
jcifs00.png

今回は、上記サイトからjcifs-1.3.17.zipをダウンロードした。ダウンロードしたZipファイルを解凍した中にある「jcifs-1.3.17.jar」をEclipseのAndroidプロジェクトのlibフォルダにをコピー。

とりあえず、今回は、Windowsの共有ファイルを読むところまでを書いてみた。
public void loadShareFile() {

SmbFile dir;
String host = "host name";
String user = "user name";
String password = "pass";

try {
//最後にバックスラッシュが必要
String path = "smb://" + user + ":" + password + "@" + host + "/test/";
dir = new SmbFile(path);

//ファイル一覧セット
SmbFile[] files = dir.listFiles();
for (int i = 0; i < files.length; i++) {

//ファイルパスを取得
String filePath = files[i].getPath();
Log.i(TAG, "File name: " + filePath);

//ファイル取得
SmbFileInputStream sfis = new SmbFileInputStream(filePath);
BufferedReader br = new BufferedReader(new InputStreamReader(sfis, "sjis"));

String str;
while ((str = br.readLine()) != null) {
Log.i(TAG, "data: " + str);
}

br.close();
sfis.close();
}

} catch (Exception e) {
e.printStackTrace();
Log.e(TAG, e.toString());
}
}

必要なパーミッションは
android.permission.INTERNET
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_WIFI_STATE
android.permission.ADD_SYSTEM_SERVICE

クローズや例外処理の部分が適当なのは勘弁してね。上の例では、「test」という共有フォルダ内のテキストファイルの内容をすべて表示している。指定するパスの最後にバックスラッシュが必要なところに気をつけたい。

コメントの投稿

非公開コメント

プロフィール

basarafire

Author:basarafire
IT関連会社で情報処理の基礎やプログラミング(主にC・Java)を教えています。最近はAndroidの教育や開発なども行ったりしています。

basarafireの開発したアプリに関する内容はこちらから
http://basarafire.jugem.jp/

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
お気に入り
[プレスブログ]価値あるブログに換金可能なポイントを差し上げます。 アクセストレードレビュー
提携
ゲーム
QRコード
QR
リンク
RSSリンクの表示
お気に入り商品
カウンター
おすすめAndroid書籍
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。