80 votes

Obtenir la taille du fichier dans le kit sdk d'android?

je suis très er*pid personne et j'ai un problème pour obtenir la taille d'un fichier. J'ai le code suivant:

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

Et toujours la longueur est égale à zéro, oui zéro. Je suis à l'aide du kit SDK d'Android (je ne sais pas quelle version), le code est en cours d'exécution à l'intérieur d'une Activité, j'ai créé une sdcard, mmm, je ne sais pas quoi dire d'autre, c'est probablement un problème d'autorisation. Est-ce que je suis absent ?? Demander plus d'infos si vous en avez besoin. Merci à l'avance.

92voto

Stephen C Points 255558

L' File.length() méthode retourne les documents suivants, conformément à la javadoc:

"La longueur, en octets, du fichier indiqué par ce résumé chemin, ou 0L si le fichier n'existe pas. Certains systèmes d'exploitation peuvent retourner 0L pour les chemins d'accès indiquant dépendant du système d'entités telles que les appareils ou les tuyaux."

Comme vous pouvez le voir, le zéro peut être retourné:

  • si le fichier existe, mais contenait zéro octets.
  • si le fichier n'existe pas, ou
  • si le fichier est certains OS fichier spécial.

Mon argent est sur le deuxième cas; c'est à dire que vous avez tort le nom de fichier / chemin d'accès. Essayez d'appeler File.exists() sur le nom de fichier pour voir ce que vous dit. Les deux autres cas sont possibles aussi, je suppose.

(Pour mémoire, la plupart des /proc/... des fichiers sur un système Linux aussi apparent avec la taille de fichier de zéro. Et Android est basé sur Linux.)

33voto

Pir Fahim Shah Points 1786

Si vous souhaitez obtenir le DOSSIER/FICHIER la taille en Ko ou Mo alors il suffit de copier et de coller ce code, il va les aider à trouver la taille exacte de votre fichier.

 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;
}   

25voto

CommonsWare Points 402670

C'est probablement le mauvais chemin. Jamais coder en dur des chemins. Utilisation:

File file=new File(Environment.getExternalStorageDirectory(), "lala.txt");

0voto

Guillaume Points 2153

Ajoutez-vous la permission <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />.

Ou essayez File file=new File(Environment.getExternalStorageDirectory(), "lala.txt")

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X