Quiero verificar si existe un archivo o no en la carpeta/assets /. ¿Cómo podría hacerlo? Por favor ayuda.¿Cómo verificar recursos de Android?
Respuesta
Usted tiene que realizar sus propios controles. Como sé, no hay un método para este trabajo.
Puede utilizar Resources.openRawResourceFd (int Resid)
http://developer.android.com/reference/android/content/res/Resources.html#openRawResourceFd%28int%29
Agregué un método de ayuda a una de mis clases de aplicación. Estoy asumiendo eso;
- la lista de activos no cambia mientras la aplicación se está ejecutando.
List<String>
no es un cerdo de la memoria (solo 78 activos en mi aplicación).- verificar que existe() en la Lista es más rápido que tratar de abrir un Archivo y manejar una excepción (en realidad no he perfilado esto).
AssetManager am; List<String> mapList; /** * Checks if an asset exists. * * @param assetName * @return boolean - true if there is an asset with that name. */ public boolean checkIfInAssets(String assetName) { if (mapList == null) { am = getAssets(); try { mapList = Arrays.asList(am.list("")); } catch (IOException e) { } } return mapList.contains(assetName); }
'List.contains()' ya devuelve booleano, sin necesidad de la expresión ternaria al final de la función. –
También puede simplemente tratar de abrir la corriente, si falla el archivo no existe y si no falla el archivo debería estar ahí:
/**
* Check if an asset exists. This will fail if the asset has a size < 1 byte.
* @param context
* @param path
* @return TRUE if the asset exists and FALSE otherwise
*/
public static boolean assetExists(Context context, String path) {
boolean bAssetOk = false;
try {
InputStream stream = context.getAssets().open(ASSET_BASE_PATH + path);
stream.close();
bAssetOk = true;
} catch (FileNotFoundException e) {
Log.w("IOUtilities", "assetExists failed: "+e.toString());
} catch (IOException e) {
Log.w("IOUtilities", "assetExists failed: "+e.toString());
}
return bAssetOk;
}
Esta solución es mucho más rápida, luego obtiene toda la carpeta del activo como lista y verifica la contención. (Medí ~ 50ms vs ~ 800ms en mi dispositivo) – azendh
- 1. Recursos de Android $ NotFoundException
- 2. Android - ¿Cómo mostrar imágenes de recursos dibujables?
- 3. Identificador de recursos de Android
- 4. ID de recursos de Android
- 5. Recursos $ NotFoundException en Android
- 6. Recursos de Android Sync Adapter
- 7. Android: ¿Cómo organizar los recursos del proyecto?
- 8. Android: ¿cómo verificar cuánta memoria queda?
- 9. Android - recursos Abierto de cadena @drawable
- 10. Recursos útiles del sistema Android
- 11. Recursos de Android: ¿Cómo se manejan los mapas de bits de los recursos manejados en memoria?
- 12. Reglas de nomenclatura para recursos de Android
- 13. Android - recuperar matriz de cadenas de recursos
- 14. Android (Java) recursos de programación de red
- 15. ¿Cómo obtener eficientemente una matriz corta de recursos en Android?
- 16. Constantes para tipos de recursos en Android
- 17. Android WebView JavaScript desde los recursos
- 18. ¿Cómo puedo verificar la versión del sistema de Android?
- 19. Android: Cómo obtener una identificación de recursos de un recurso de Android
- 20. ¿Cómo puedo verificar si una clave del paquete de recursos no existe utilizando etiquetas JSTL?
- 21. Android: ¿Cómo liberar recursos cuando finaliza la aplicación?
- 22. ¿Cómo uso los recursos Android predeterminados en mi diseño xml?
- 23. ¿Cómo llamar colores dinámicamente a los recursos en Android?
- 24. recursos Android notlong/largas identificadores no trabajan
- 25. android: refiriéndose a recursos en xml personalizado
- 26. Android- Proporcionar recursos alternativos que no funciona?
- 27. Cómo verificar si la URL es válida en Android
- 28. ¿Cómo verificar todos los servicios en ejecución en Android?
- 29. Cómo verificar si Android "Datos móviles" está en
- 30. ¿Cómo verificar las aplicaciones que se ejecutan actualmente en Android?
Yo también creo que sí. Gracias. – Mudassir
Es comprensible que no haya un método para esto, pero si no puede proporcionar una alternativa, entonces esta no debería haber sido una respuesta. – Gowiem