2013年3月22日金曜日

【Android】ローカル領域への保存でエラー:File contains a path separator


Androidではローカル領域とSDカードとにファイルを保存することができる.
SDカードに保存する場合は誰でも参照できてしまい,セキュリティ的に不安である.
耐タンパー性を確保するためにはローカルに保存することになる.
もしくは,SDカードに暗号化して保存する.

後者は圧倒的にしちめんどくさいので,ローカルにファイルを保存することにした.

ローカル領域にファイルを保存するときに
java.lang.IllegalArgumentException: File (ファイル名) contains a path separator
というerrorが出ることがある.

ファイルを1つだけ保存するならまず出ないだろうが,
ディレクトリ構造をストリームで保存したり,
不適切な名称をつけようとすると出るエラーである.

ローカル領域に保存すると
/data/data/[アプリケーション名]/file
に保存されることになるのだが,
エラーの理由としてはローカル領域に保存する場合は
ディレクトリ構造を作ることができないためである.

ファイル名に/が入っていたり
ストリームでディレクトリ構造になっていたりするとエラーになる.

ディレクトリを作れないので,
/data/data/[アプリケーション名]/file
の下にファイルを横一列で配置しないといけない.

その代わり,配下のファイル名を全て取得する
fileList()メソッドがある.
管理が大変なのか,楽なのか
ファイル数で決まるな…

0 件のコメント:

コメントを投稿