¿Cómo pasar una ruta de archivo que está en la carpeta de activos a Archivo (ruta de cadena)?

Posible duplicado:
Android: cómo determinar la ruta absoluta para archivos específicos de los activos?

Estoy tratando de pasar un archivo a la clase File (String path). ¿Hay alguna manera de encontrar la ruta absoluta del archivo en la carpeta de activos y pasarlo a File ()? Intenté file:///android_asset/myfoldername/myfilename como cadena de ruta pero no funcionó. ¿Alguna idea?

AFAIK, no puedes crear un File desde un archivo de activos porque están almacenados en el apk, lo que significa que no hay una ruta a una carpeta de activos.

Sin embargo, puede intentar crear ese File utilizando un búfer y AssetManager (proporciona acceso a los archivos de activos brutos de una aplicación).

Intenta hacer algo como:

 AssetManager am = getAssets(); InputStream inputStream = am.open("myfoldername/myfilename"); File file = createFileFromInputStream(inputStream); private File createFileFromInputStream(InputStream inputStream) { try{ File f = new File(my_file_name); OutputStream outputStream = new FileOutputStream(f); byte buffer[] = new byte[1024]; int length = 0; while((length=inputStream.read(buffer)) > 0) { outputStream.write(buffer,0,length); } outputStream.close(); inputStream.close(); return f; }catch (IOException e) { //Logging exception } return null; } 

Déjame saber sobre tu progreso.

A menos que los desempaquete, los activos permanecen dentro de la aplicación. En consecuencia, no hay un camino que pueda ingresar a un Archivo. La ruta que ha dado en su pregunta funcionará con / en un WebView, pero creo que es un caso especial para WebView.

Necesitará descomprimir el archivo o usarlo directamente.

Si tiene un contexto, puede usar context.getAssets().open("myfoldername/myfilename"); para abrir un InputStream en el archivo. Con InputStream puedes usarlo directamente o escribirlo en algún lado (luego lo puedes usar con File).

    Intereting Posts