<メモ>
Android端末から、Windowsの共有フォルダにアクセスし、
ファイル操作。(コピー)
使用するライブラリは、JCIFSがよさそうだ。
でも、ライセンスがLGPL...
JCIFSは、CIFS/SMBのJava用ライブラリで、Windowsのファイルシステム
JCIFS ライセンス:LGPL (http://ja.wikipedia.org/wiki/GNU_Lesser_General_Public_License)
ダウンロード URL:http://jcifs.samba.org/
上記サイトからjcifs-1.3.17.zipをダウンロード
zipを解凍し、eclipseのlibフォルダにjcifs-1.3.17.jarをコピー。
必要なパーミッション(AndroidManifest.xml)
android.permission.INTERNET
android.permission.ACCESS_NETWORK_STATE
android.permission.ACCESS_WIFI_STATE
android.permission.ADD_SYSTEM_SERVICE
------
sample
Windowsの共有フォルダにあるファイルを参照し、Android端末にファイルを作成。
作成後、共有フォルダのファイルを削除。
private void download() {
SmbFile dir;
String host = "xxx.xxx.xxx.xxx";
String user = "user";
String password = "pass";
String pathTo = "/sdcard/sync/"; //Androidのダウンロード先
try {
//パスはの最後はバックスラッシュが(/)必要
String path = "smb://" + user + ":" + password + "@" + host + "/sync/";
dir = new SmbFile(path);
//ファイル一覧セット
SmbFile[] files = dir.listFiles();
for (int i = 0; i < files.length; i++) {
//ファイルパスを取得
String filePath = files[i].getPath();
Log.i(”XXX”,filePath);
// コピー元ファイル取得
SmbFileInputStream sfis = new SmbFileInputStream(filePath);
// コピー先フォルダ存在チェック
File dirTo = new File(pathTo);
if (!dirTo.exists()) {
dirTo.mkdirs();
}
// コピー先ファイル生成
FileOutputStream fos = new FileOutputStream(pathTo + files[i].getName());
//byte buf[] = new byte[256];
byte buf[] = new byte[1024];
int len;
while ((len =sfis.read(buf)) != -1){
fos.write(buf, 0, len);
}
//クローズ
fos.flush();
fos.close();
sfis.close();
//取得元ファイル削除
files[i].delete();
}
} catch (Exception e) {
e.printStackTrace();
Log.e("XXX", e.toString());
}
}