2013-03-04 2 views
2

Я пытаюсь вычислить общий объем хранения файлов, используемый в Android. Я использовал используемую рекурсивную функцию hereРассчитанный свободный размер отличается от системной статистики

Когда я вычитаю этот размер из общего хранилища своей SD-карты, я получаю отличный от того, что Android дает, используя StatFs.

StatFs stat = new StatFs(path); 
long blockSize = stat.getBlockSize(); 
long availableBlocks = stat.getFreeBlocks(); 
return Formatter.formatFileSize(ctx, availableBlocks * blockSize); 

Это не разница в несколько Kb, но до 2 ГБ на 16 ГБ SD-карте.

Я проверил пару приложений для анализа хранилищ на рынке, и у них такая же проблема. Говорят, что у меня 8,3 Гб бесплатно, в то время как Android продолжает говорить, что это 6 Гбит (что является тем же значением, которое я получаю при подключении телефона к компьютеру).

Что нам не хватает здесь?

+1

Вы укоренены, с доступом ко всему диску? Если у вас установлены приложения на SD, ваша функция может не добавлять их к вашей «используемой» сумме. – Geobits

+0

На самом деле я работаю с Galaxy Nexus, у которого нет надлежащей SD-карты, кроме эмулируемой. Я предполагаю, что тот же принцип применяется. Я попробую укоренять свое устройство. –

+0

Не можете ли вы получить размер этой части SD без укоренения? –

ответ

1

Если вы заинтересованы только в общем размере раздела (не какая-то папка), вы можете использовать в Java File класса также:

File f = new File("/mnt/sdcard/"); 

long free = f.getFreeSpace(); 
long total = f.getTotalSpace(); 
long usable = f.getUsableSpace(); 

Кроме того, Android, вероятно, блокирует участок для SD-приложений и данных.

1

Я использовал функцию рекурсивного используется here

Эта функция вычисляет размеры файлов, содержащихся:

Просто пройти через все файлы и суммируют длину них:

... но размер файла не обязательно равен количеству пространства, которое он занимает на диске.

Это не разница в несколько Kb, но до 2 ГБ на 16 ГБ SD-карте.

Эта дельта должна масштабироваться с указанием количества файлов.

+0

Что было бы правильно? –

Смежные вопросы