2010-06-13 14 views
22
InputStream myInput = myContext.getAssets().open("MyFolder/" + "MyFile.db3"); 

Tengo un archivo en la carpeta de activos en una subcarpeta como la anterior. Sin embargo, no obtiene el archivo, ¿hay alguna manera especial de especificar una subcarpeta en la carpeta de activos?Elementos de Android con subcarpetas

Ian

+1

Parece correcto: ¿se emitieron excepciones como IOException? –

+0

Sí, pero curiosamente la excepción está vacía, no hay "causa" –

+0

Si puede pegar el seguimiento de la pila en su pregunta original, sería bastante útil. –

Respuesta

39

Editar: Estaba mal sobre las subcarpetas.
Este código funciona bien en 1,5 (para un archivo sample.txt colocado bajo sub carpeta en assets):

InputStream is = getAssets().open("sub/sample.txt"); 
BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
String line = null; 
while ((line = br.readLine()) != null) { 
    Log.e("wtf", line); 
} 
br.close(); 

¿Estás seguro de que tienes los nombres de la derecha?

+0

Los documentos dicen que puedes. –

5

¿Su archivo de activos es más de 1 MB?

Me doy cuenta de que recibo la misma IOException extraña y vacía si intento abrir un elemento que tiene más de este tamaño. El hecho de que esté en una subcarpeta podría ser una pista falsa. Intento abrir un archivo de texto grande para poder solucionar este límite dividiéndolo. ¿Puedes hacer algo similar con tu archivo .db3?

+0

omfg wtf !!! este es un error estúpido y deberían arreglar esto. muchas gracias por escribir esta respuesta, ciertamente es el mismo caso para mí donde tenía un archivo .ogg en "music/blah.ogg" que no funcionó porque era bastante más de 1 mb, pero otro archivo "music/foo.ogg "funciona y solo tiene 26 kb ... –

5
"MyFolder/" + "MyFile.db3" 

Un nombre de archivo para los archivos agregados a la carpeta de activos debe estar en minúscula. , por lo tanto, un nombre de archivo como MyFolder y Myfile.db3 no es válido. Renombrarlos a "myfolder" y "myfile.db3", entonces todo estará bien.

Cuestiones relacionadas