Intereting Posts
Может ли Aazon S3 возвращать объектные сводки в порядке дат? Обработка заголовка ActionBar с помощью стека фрагментов? Какова правильная конфигурация проекта для N Developer Preview? Android Studio продолжает замерзать даже с новой версией 2.2.3 для Windows Загружает ли видео с SD-карты на Facebook с помощью SDK для Facebook? Как отключить кеш браузера Android навсегда? Android parentActivity не воссоздается после возврата startActivityForResult Android, как сделать clickable значок логотипа в панели действий? Экран блокировки телефона Android приводит к нескольким последующим событиям onPause / onResume Уведомление для музыкального плеера Android Не удалось исправить ошибку Android Proguard с ошибкой 1 ошибка Темы для Android Surfaceview и утечки памяти Как разрешить эту ошибку VFY: невозможно разрешить виртуальный метод Android – Cant Удалить сеть Wifi Programatically – метод removeNetwork (int) в типе WifiManager не применим для аргументов (String) Некоторые пакеты были найдены, но не совместимы с обновлениями

Получить размер файла в android sdk?

У меня проблема с размером файла. У меня есть следующий код:

File file = new File("/sdcard/lala.txt"); long length = file.length(); 

И всегда длина равна нулю, да нуль.

Я использую Android SDK (не уверен, какая версия), код работает внутри Activity, я создал SD-карту.

Возможно, это вопрос разрешения? Есть ли что-то, чего я не вижу?

Solutions Collecting From Web of "Получить размер файла в android sdk?"

Метод File.length() возвращает следующее в соответствии с javadoc :

«Длина в байтах файла, обозначенного этим абстрактным путём, или 0L, если файл не существует. Некоторые операционные системы могут возвращать 0L для имен путей, обозначающих системные объекты, такие как устройства или каналы».

Как вы можете видеть, нулевой может быть возвращен:

  • Если файл существует, но содержит нулевые байты.
  • Если файл не существует, или
  • Если файл является специальным специальным файлом, специфичным для ОС.

Мои деньги во втором случае; Т.е. у вас неправильное имя файла / путь. Попробуйте вызвать File.exists() в имени файла, чтобы узнать, что вам это говорит. Наверное, возможны и два других случая.

(Для записи большинство /proc/... файлов в системе на базе Linux также имеют нулевой размер файла, а Android – на базе Linux).

Если вы хотите получить размер FOLDER / FILE с точки зрения Kb или Mb, просто скопируйте и вставьте этот код, это поможет найти точный размер вашего файла.

  String value=null; long Filesize=getFolderSize(file)/1024;//call function and convert bytes into Kb if(Filesize>=1024) value=Filesize/1024+" Mb"; else value=Filesize+" Kb"; showToast("Your File size is "+value); 
  **This function will return size in form of bytes** 
  public static long getFolderSize(File f) { long size = 0; if (f.isDirectory()) { for (File file : f.listFiles()) { size += getFolderSize(file); } } else { size=f.length(); } return size; } 

Вы используете:

 File file=new File(Uri.parse("/sdcard/lala.txt").getPath()); 

вместо

 File file=new File(uri.toString());