iOS
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSDictionary *dictionary = [[NSFileManager defaultManager] attributesOfFileSystemForPath:[paths lastObject] error:nil];
if (dictionary) {
int GiB = 1024*1024*1024;
float free = [[dictionary objectForKey: NSFileSystemFreeSize] floatValue]/GiB;
float total = [[dictionary objectForKey: NSFileSystemSize] floatValue]/GiB;
NSLog(@"Space: %.3f", free);
NSLog(@"Total: %.3f", total);
}
Android
ディレクトリのパスはいくつかとれますが、デバイスによって使われ方がどうも違うっぽい感じがしました。
写真のデータ置き場はgetDataDirectory
で取れるパスが正解のような感じ。
- Environment.getDataDirectory()
- Environment.getExternalStorageDirectory()
- Environment.getRootDirectory()
参考
データ/キャッシュ/外部ストレージ/システムのパスを取得するには - 逆引きAndroid入門
long MEGA_BYTE = 1048576;
String path = Environment.getDataDirectory().getAbsolutePath();
StatFs statFs = new StatFs(path);
long availableBlocks = statFs.getAvailableBlocks();
long blockSize = statFs.getBlockSize();
long freeBytes = availableBlocks * blockSize;
Log.d("MyApp", "Free:" + (freeBytes / MEGA_BYTE));