Tengo un archivo de texto en la carpeta de activos que necesito convertir en un objeto File (no en InputStream). Cuando probé esto, obtuve la excepción "no such file":Android: ¿cómo creo un objeto File desde el archivo de activos?
String path = "file:///android_asset/datafile.txt";
URL url = new URL(path);
File file = new File(url.toURI()); // Get exception here
¿Puedo modificar esto para que funcione?
Por cierto, en cierto modo me trataron de "código con el ejemplo" mirar el siguiente fragmento de código en mi proyecto en otro lugar que hace referencia a un archivo HTML en la carpeta de activos
public static Dialog doDialog(final Context context) {
WebView wv = new WebView(context);
wv.loadUrl("file:///android_asset/help/index.html");
Lo que admitir que yo no entiendo completamente el mecanismo anterior, así que es posible que lo que estoy tratando de hacer no funcione.
Thx!
¿Por qué quiere leer en un objeto del archivo? Creo que debes tomar los datos del activo como un InputStream y escribirlos como un outputStream que apunta a una ubicación física. Luego puede abrirlo como un objeto File. http://stackoverflow.com/questions/4447477/android-how-to-copy-files-in-assets-to-sdcard – Gophermofur
Estoy tratando de evitar hacer copias del archivo de activos, pero lo haré si todo otro falla La razón por la que necesito un archivo es porque se usa como argumento en un ctor cuyo código no tengo acceso, y ese es el único ctor que existe para esa clase. –
Ah, eso tiene sentido. Quizás: haga la copia en SDCARD, páselo \ al constructor y elimínelo una vez que haya terminado. Si el archivo es el mismo y siempre lo guarda en la misma ubicación en SDCARD, solo haría 1 copia (simplemente sobrescribiría la versión anterior). – Gophermofur