Android: как использовать хранилище приложением - PullRequest
1 голос
/ 25 мая 2010

У меня есть приложение, в котором есть каталог, созданный на SDCard, где я сохраняю фотографии. Я хотел бы знать, сколько места использует этот каталог на SDCard, чтобы показать эту информацию пользователю.

1 Ответ

2 голосов
/ 25 мая 2010

Я не уверен, что это лучшее решение, но вы могли бы сделать что-то подобное:

int totalSize = 0;
File root = new File("path to one of your file").getParentFile();
File[] files = root.listFiles();
for (File file: files) {
   totalSize = totalSize + file.length();
}

Тогда totalSize содержит сумму всех файлов в каталоге в байтах. в зависимости от структуры вашего каталога (например, есть ли какие-либо подкаталоги?), вы должны адаптировать код.

Edit: После небольшого исследования я почти уверен, что в Java нет метода, который бы напрямую возвращал размер каталога. Смотрите, например эта ссылка: http://forums.sun.com/thread.jspa?threadID=640296

Однако в этой ссылке http://www.codemiles.com/java/get-directory-size-in-java-t1242.html есть рекурсивная версия моего кода, упомянутого выше, для вычисления любых подкаталогов, если таковые имеются.

Существует также небольшая библиотека, которая может делать то, что вы хотите:

http://commons.apache.org/io/api-release/index.html

Однако тогда вы должны импортировать эту библиотеку. Я лично предпочел бы написать этот короткий метод сам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...