¿Cómo puedo verificar programáticamente cuánto espacio libre tiene una tarjeta SD montada en un dispositivo Android?¿Cómo puedo verificar cuánto espacio libre tiene una tarjeta SD montada en un dispositivo Android?
¿Cómo puedo verificar cuánto espacio libre tiene una tarjeta SD montada en un dispositivo Android?
Respuesta
Para obtener espacio disponible en el "libre" de la tarjeta SD externa para mostrar un número que coincide con la Menú-> Configuración> Tarjeta SD y el número de almacenamiento del teléfono, utilice el siguiente código:
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;
documentación 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;
}
}
¿Puedo preguntar por qué el" .restat (...) "? También creo que cometió un error al usar Environment.getDataDirectory(). GetPath() en "getExternalAvailableSpaceInBytes()" en lugar de Environment.getExternalStorageDirectory(). GetPath() ... – Kasium
Solucionado: Tiene razón en ambos problemas, restablecer fue no es necesario ya que el objeto StatFs se crea en el lugar y tiene la información más reciente. Y la ruta del directorio de datos se agregó erróneamente. Gracias. –
Aquí está una manera más simple, que se puede utilizar desde el nivel de la API 9:
Environment.getExternalStorageDirectory().getUsableSpace();
http://developer.android.com/reference/java/io/File.html#getUsableSpace()
Este código está trabajando para mí:
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. Android ¿Cuánto espacio hay libre en la tarjeta SD?
- 2. ¿Cómo saber si la tarjeta SD está montada en Android?
- 3. Obtenga espacio libre en la memoria interna
- 4. ¿TODOS los dispositivos Android tienen una tarjeta SD interna?
- 5. Buscar etiqueta de volumen de tarjeta SD en Android
- 6. ¿Cómo puedo verificar si la tarjeta SIM está disponible en un dispositivo Android?
- 7. ¿Cómo detectar si el dispositivo posee una tarjeta sd?
- 8. Características de la tarjeta SD Android en Samsung Galaxy
- 9. ¿Puedo leer una tarjeta HID iClass con un dispositivo Android?
- 10. ¿Cómo redireccionar mi salida de registro de Logcat a la tarjeta SD en un dispositivo Android?
- 11. cómo obtener todas las imágenes y fotos de mi dispositivo Android no desde una tarjeta SD?
- 12. Escribiendo un archivo en una tarjeta SD
- 13. Eliminar una carpeta en la tarjeta SD
- 14. Android Guardar imagen en la tarjeta SD
- 15. Comprobar si existe directorio en la tarjeta SD de Android
- 16. ¿Cómo puedo saber cuánto espacio usa TFS?
- 17. Cómo verificar si un archivo existe en un directorio en la tarjeta SD
- 18. Cómo verificar si la carpeta recién creada está presente en la tarjeta SD en Android
- 19. Android guardar Bitmap a tarjeta SD
- 20. Espacio libre del dispositivo y espacio de espacio aislado usado
- 21. ¿Cómo determinar cuánto espacio libre hay en una unidad en Qt?
- 22. Android adb push a la ubicación en el dispositivo sin tarjeta SD y sin acceso raíz
- 23. Cómo puedo leer el archivo json de la tarjeta SD
- 24. ¿Cómo puedo obtener el tamaño de una carpeta en la tarjeta SD en Android?
- 25. Cómo guardar archivos en la tarjeta SD
- 26. Android: eliminar una imagen de la tarjeta SD
- 27. Android - eliminar archivos en la tarjeta SD al desinstalar
- 28. Compruebe si existe archivo en la tarjeta SD en Android
- 29. Cómo verificar el espacio libre disponible en mongodb
- 30. ¿Cómo puedo leer un archivo de texto desde la tarjeta SD en Android?
+1 para el código de ejemplo –
1 es tan útil. el otro es una burla. – murftown
+1 Sí, es útil – Praveenkumar