Comment puis-je vérifier par programme l'espace libre d'une carte SD montée sur un appareil Android?Comment vérifier l'espace libre d'une carte SD montée sur un appareil Android?
Répondre
Pour obtenir l'espace « libre » de la carte SD externe disponible pour afficher un numéro qui est d'accord avec la Menu-> Paramètres-> carte SD et le numéro de stockage du téléphone, utilisez le code suivant:
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
double sdAvailSize = (double)stat.getAvailableBlocks()
* (double)stat.getBlockSize();
//One binary gigabyte equals 1,073,741,824 bytes.
double gigaAvailable = sdAvailSize/1073741824;
documentation pertinente : http://developer.android.com/reference/android/os/StatFs.html
/**
* This class is designed to get available space in external storage of android.
* It contains methods which provide you the available space in different units e.g
* bytes, KB, MB, GB. OR you can get the number of available blocks on external storage.
*
*/
public class AvailableSpaceHandler {
//*********
//Variables
/**
* Number of bytes in one KB = 2<sup>10</sup>
*/
public final static long SIZE_KB = 1024L;
/**
* Number of bytes in one MB = 2<sup>20</sup>
*/
public final static long SIZE_MB = SIZE_KB * SIZE_KB;
/**
* Number of bytes in one GB = 2<sup>30</sup>
*/
public final static long SIZE_GB = SIZE_KB * SIZE_KB * SIZE_KB;
//********
// Methods
/**
* @return Number of bytes available on external storage
*/
public static long getExternalAvailableSpaceInBytes() {
long availableSpace = -1L;
try {
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
availableSpace = (long) stat.getAvailableBlocks() * (long) stat.getBlockSize();
} catch (Exception e) {
e.printStackTrace();
}
return availableSpace;
}
/**
* @return Number of kilo bytes available on external storage
*/
public static long getExternalAvailableSpaceInKB(){
return getExternalAvailableSpaceInBytes()/SIZE_KB;
}
/**
* @return Number of Mega bytes available on external storage
*/
public static long getExternalAvailableSpaceInMB(){
return getExternalAvailableSpaceInBytes()/SIZE_MB;
}
/**
* @return gega bytes of bytes available on external storage
*/
public static long getExternalAvailableSpaceInGB(){
return getExternalAvailableSpaceInBytes()/SIZE_GB;
}
/**
* @return Total number of available blocks on external storage
*/
public static long getExternalStorageAvailableBlocks() {
long availableBlocks = -1L;
try {
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
availableBlocks = stat.getAvailableBlocks();
} catch (Exception e) {
e.printStackTrace();
}
return availableBlocks;
}
}
Puis-je demander pourquoi le « .restat (...) »? Aussi je crois que vous avez fait une erreur en utilisant Environment.getDataDirectory() getPath() dans "getExternalAvailableSpaceInBytes()" au lieu de Environment.getExternalStorageDirectory() getPath() ... – Kasium
fixe:.. Vous avez raison dans les deux questions, restat était pas nécessaire car l'objet StatFs est créé sur place et dispose des dernières informations. Et le chemin du répertoire de données a été ajouté par erreur. Merci. –
est ici une façon plus simple, qui est utilisable depuis le niveau de l'API 9:
Environment.getExternalStorageDirectory().getUsableSpace();
http://developer.android.com/reference/java/io/File.html#getUsableSpace()
Ce code fonctionne pour moi:
StatFs stat = new StatFs(System.getenv("SECONDARY_STORAGE"));
long bytesAvailable = (long)stat.getBlockSize() * (long)stat.getAvailableBlocks();
long kiloAvailable = bytesAvailable/1024; // Available space from SD in KB
long megaAvailable = bytesAvailable/(1024*1024); // Available space from SD in MB
return (int)kiloAvailable;
public static float megabytesAvailable(String StrPath) {
StatFs stat = new StatFs(StrPath);
long bytesAvailable = (long)stat.getBlockSize() * (long)stat.getAvailableBlocks();
return bytesAvailable/(1024.f * 1024.f);
}
- 1. Comment lire/écrire des données sur la carte SD montée
- 2. carte Android-Sd
- 3. Comment savoir la carte SD a assez de taille libre pour écrire sur Android?
- 4. android File.exists ne parvient pas à vérifier un fichier sur la carte SD
- 5. Comment charger jni de la carte SD sur android 2.1?
- 6. émulateur Android problème de carte SD
- 7. Comment faire un fichier caché dans la carte SD Android?
- 8. Problème de carte SD d'émulateur Android
- 9. Performance d'écriture sur carte SD
- 10. stocker des données d'application Android sur la carte SD
- 11. Déplacer des fichiers sur une carte SD sous Android
- 12. Mettre manuellement les fichiers sur l'émulateur Android Carte SD
- 13. Android: Installer mon application sur la carte SD par défaut
- 14. Création d'un fichier sur la carte SD dans android
- 15. Comment puis-je vérifier si la carte SIM est disponible dans un appareil Android?
- 16. comment obtenir l'espace libre disponible sur sdcard de l'application android?
- 17. Opérations de bas niveau avec carte SD sur Android
- 18. Comment faire pour exécuter l'émulateur android avec la carte SD
- 19. Comment utiliser la carte SD dans Android Emulator 1.5
- 20. Comment créer automatiquement un répertoire sur la carte SD
- 21. L'autorisation "Carte SD" apparaît sur les appareils 2.0?
- 22. Images du dossier sur la carte SD
- 23. Comment récupérer la dernière image d'une carte SD dans Android?
- 24. Comment stocker les images téléchargées dans la carte SD android
- 25. Autorisation d'écriture sur la carte SD
- 26. Émulateur Carte SD Partition
- 27. Comment renommer un fichier sur une carte SD avec une application Android?
- 28. Comment savoir si l'USB est connecté à un appareil Android?
- 29. carte libre icône/symbologie
- 30. Application Android qui doit utiliser une carte SD non-mémoire
+1 pour le code exemple –
ce 1 est tellement utile. l'autre est une allumeuse. – murftown
+1 Oui, c'est utile – Praveenkumar