2016-12-05 1 views
1

J'ai une application qui a parfois besoin de sauvegarder des fichiers. Avant d'écrire, il vérifie l'espace utilisable sur l'appareil. Voici le code que j'utilise pour vérifier l'espace, avec des instructions de journal.android file.getUsableSpace renvoie zéro avec getExternalFilesDir (null), seulement après la suppression d'autres fichiers

String state = Environment.getExternalStorageState(); 
Log.d("Classname", "external storage state is " + state); 
File file = new File(getExternalFilesDir(null) + File.separator); 
Log.d("Classname", "file exists " + file.exists()); 
long usableSpace = file.getUsableSpace(); 
Log.d("Classname", "Space available " + usableSpace); 

J'ai reçu un rapport de bogue après la suppression d'autres fichiers, environ 3-5 Mo, sur un dispositif qui a environ 3 Go d'espace libre, getUsableSpace retourne 0 en essayant de sauver un autre fichier.

Le journal avant d'ajouter le premier fichier:

11:21:46.879: external storage state is mounted 
11:21:46.879: file exists true 
11:21:46.880: Space available 3185496064 

Le journal après avoir supprimé le premier fichier, en essayant d'ajouter une seconde:

11:21:57.811: external storage state is mounted 
11:21:57.822: file exists false 
11:21:57.823: Space available 0 

Je autorisations de stockage externes dans mon manifeste, et J'ai essayé de vérifier si le stockage est monté et d'appeler mkdir() lors de la création du fichier de stockage externe, et le bug persiste. J'ai également demandé au testeur de redémarrer l'appareil, pensant que cela pouvait être dans un état bizarre.

Est-ce que quelqu'un a des idées pour lesquelles cela pourrait se produire?

Répondre

0

Je l'ai trouvé. La solution était dans la façon dont la suppression se produit - si le dernier fichier supprimé est parti, je nettoyais le répertoire que getExternalStorageDir cherchait, donc quand j'essayais d'obtenir getUsableSpace, le répertoire n'existait pas.