Me gustaría obtener el tamaño de archivo de un archivo ubicado en el directorio de activos. Vi muchos ejemplos como¿Hay alguna forma de abrir un archivo como objeto de archivo desde la carpeta de activos de Android?
InputStream myInput = appContext.getAssets().open()
Sé que puedo determinar tamaño de archivo por simple lectura InputStream
en el ciclo pero estoy buscando una manera de hacerlo a través de File object
.
Así que necesito un camino a los activos y eso es lo que no puedo determinar ... ¿Cómo conseguir ese camino?
También intentó obtener AssetFileDescriptor
a través de appContext.getAssets().openFd()
y openNonAssetFd()
, pero no tuvo suerte - obtuvo FileNotFound
o probablemente excepciones comprimidas.
Por cierto, esos métodos openFd están "bastante descritos" en developer.android.com.
lo hubiera intentado siguiente código:
file = new File(new URI("file:///android_asset/db/call3.db"));
Log.i(APP_TAG, "File name: "+file.getName());
Log.i(APP_TAG, "File path: "+file.getPath());
Log.i(APP_TAG, "File length: "+file.length());
Log.i(APP_TAG, "File isFile: "+file.isFile());
Log.i(APP_TAG, "File exists: "+file.exists());
que da salida al registro:
04-13 12: 10: 03,413: INFO (6259): Nombre del archivo: call3.db
04-13 12: 10: 03.432: INFO (6259): Ruta del archivo: /android_asset/db/call3.db
04-13 12: 10: 03.444: INFO (6259): Longitud del archivo: 0
04-13 12: 10: 03.444 : INFO (6259): Archivo isFile: falso
04-13 12: 10: 03.444: INFO (6259): El archivo existe: falso
por supuesto, el tamaño del archivo no es 0 es 195 584 bytes.
ok. y ¿qué pasa con appContext.getAssets(). openFd()/openNonAssetFd()? ¿Para qué sirve y por qué tampoco funciona? – Stan
La respuesta más desgarradora, pero verdadera. –