Получить размер файла в 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());