Androidのストレージを埋め尽くしてくれという要望?にお答えして
指定サイズのダミーファイルを作成するコードを書いてみました。
忘れないうちにメモしておきます。
private static final int KB = 1024;
private static final int MB = 1024 * MB;
private long available; // 空き容量
private long used; // 使用中
private long size; // 最大容量
/**
* 内部ストレージの状態を調査する
*/
public void getInternalStorageStatus() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
available = stat.getAvailableBlocks() * stat.getBlockSize();
size = stat.getBlockCount() * stat.getBlockSize();
used = maxSize - availableInternalStorage;
}
/**
* 指定サイズ(MB単位)のファイルを内部ストレージへ保存する
* @param long MBでファイルサイズを指定(1MBのファイルなら1と指定)
* @return true 保存成功
*/
public boolean saveFileToInternalStorage(long fileSizeMB) {
// 保存可能領域が足りない
if(fileSizeMB > available / MB) {
return false;
}
// 1MB分の文字列生成
char[] chars = new char[1 * MB];
Arrays.fill(chars, 'x');
String mbString = new String(chars);
// ファイル保存開始
try {
FileOutputStream fos = openFileOutput("dummy.txt", MODE_PRIVATE);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
for(int i = 0; i < fileSizeMB; i++) {
// 文字列の書き込み
bw.append(mbString);
bw.flush();
}
bw.close();
fos.flush();
fos.close();
} catch(Exception e) {
e.printStackTrace();
return false;
}
return true;
}
こんな感じで、ストレージを埋め尽くすアプリを作っておりました。
アプリはこちらからFill Storage - Google Play

0 件のコメント:
コメントを投稿