mPaaS が提供するファイルストレージは、Android ネイティブの File に基づくファイル暗号化機能を提供します。
重要: ファイルの暗号化は Mobile Security Guard が提供する暗号化機能を使用するため、Mobile Security Guard の暗号化イメージが正しく生成されていることを確認する必要があります。
ファイルの種類
ZFile: この種類のファイルは
data/data/package_name/filesに保存されます。ZExternalFile: この種類のファイルは
sdcard/Android/data/package_name/filesに保存されます。ZFileInputStream/ZFileOutputStream: ファイルストレージの入出力ストリームです。このストリームを使用した場合、ファイルは暗号化されません。
ZSecurityFileInputStream/ZSecurityFileOutputStream: ファイルストレージの入出力ストリームです。このストリームを使用した場合、ファイルは暗号化されます。
例
ファイルをテキストに変換する
/**
* ファイルをテキストに変換する
* @param file: ファイル
* @return テキスト
*/
public String file2String(File file) {
InputStreamReader reader = null;
StringWriter writer = new StringWriter();
try {
// 復号化入力ストリーム ZSecurityFileInputStream を使用します
// 暗号化/復号化機能を使用しない場合は、ZFileInputStream を使用します
reader = new InputStreamReader(new ZSecurityFileInputStream(file, this));
//入力ストリームを出力ストリームに書き込みます
char[] buffer = new char[DEFAULT_BUFFER_SIZE];
int n = 0;
while (-1 != (n = reader.read(buffer))) {
writer.write(buffer, 0, n);
}
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
if (reader != null)
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
//変換結果を返します
if (writer != null) {
return writer.toString();
} else {
return null;
}
}テキストをファイルに変換する
/**
* テキストをファイルに変換する
* @param res: テキスト
* @param file: ファイル
* @return true は成功、false は失敗を意味します
*/
public boolean string2File(String res, File file) {
boolean flag = true;
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter;
try {
bufferedReader = new BufferedReader(new StringReader(res));
// 復号化出力ストリーム ZSecurityFileOutputStream を使用します
// 暗号化/復号化機能を使用しない場合は、ZFileOutputStream を使用します
bufferedWriter = new BufferedWriter(new OutputStreamWriter(new ZSecurityFileOutputStream(file, this)));
//文字バッファー
char buf[] = new char[DEFAULT_BUFFER_SIZE];
int len;
while ((len = bufferedReader.read(buf)) != -1) {
bufferedWriter.write(buf, 0, len);
}
bufferedWriter.flush();
bufferedReader.close();
bufferedWriter.close();
} catch (Exception e) {
e.printStackTrace();
flag = false;
return flag;
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return flag;
}ファイルを挿入する
/**
* ファイルを挿入する
*
* @param file: ファイル
*/
private void insertFile(BaseFile file) {
if (null == file) {
return;
}
StringBuilder sb = new StringBuilder();
String content = sb.append(file.getName())
.append(' ')
.append(SIMPLE_DATE_FORMAT.format(new Date(System.currentTimeMillis()))).toString();
string2File(content, file);
try {
if (!file.exists()) {
file.createNewFile();
}
mData.add(file);
} catch (Exception e) {
e.printStackTrace();
}
}ファイルを削除する
/**
* ファイルを削除する
*
* @param file: ファイル
*/
private void deleteFile(BaseFile file) {
try {
file.delete();
mData.remove(file);
} catch (Exception e) {
e.printStackTrace();
}
}