2012年11月26日

【Android】ダミーファイルを作る




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