PDA

Ver la Versión Completa : [ CONSULTA ] Ayuda... file.makedirs() no crea los directorios (?!)


timonoj
09/05/12, 09:54:29
Buenas!

Tengo este problema. Estoy haciendo un programa que descarga una página y todas las imágenes que hay en dicha página. En la carpeta que descarga los archivos, quiero que se guarden en plan esta estructura:
.../files/nombre_del_articulo.html
.../files/nombre_del_articulo/imagen1.jpg
.../files/nombre_del_articulo/imagen2.jpg
etc.
Vamos, que por página descargada cree una carpeta con el nombre de la página para las imágenes correspondientes.
Veamos el código que he escrito...
File dirPics = new File(SDcard.getAbsolutePath()+"/data/data/mi_app/files/"+pageTitle);pageTitle es un string con el título de la página.

file= new File(dirPics, filename);filename es otro string, que tiene el nombre que tendrá el jpg. Usease, dirpics es la carpeta y filename el nombre de archivo.

if (!file.exists()){
Log.i("WikiOff","Folder didn't exist, creating now...successful? "+file.mkdirs());
}Si file no existe, le creo la carpeta. Ahora mismo lo tengo para que trate de crear la carpeta mientras escribe la entrada al log.i. Antes era una línea por separado, y seguía fallando. El log escupe siempre "Folder didn't exist, creating now...successful? FALSE".
La apk tiene en el manifest permiso para escribir en la SD card, así que en principio ese no es el problema. En el log, cada vez que trato de guardar un archivo, trato de crear la carpeta, así que lo tengo bien de morralla. Pero cada vez que lo intenta, pone lo siguiente:

05-09 07:32:07.175: W/System.err(379): java.io.FileNotFoundException: /mnt/sdcard/data/data/mi_app/files/articulo/magnify-clip.png (Not a directory)
No sé a qué se refiere con que no es un directorio (¿?). La ruta existe correctamente hasta "files", inclusive. El directorio "articulo" no se crea.
Alguien sabe por qué pasa esto?
Mil gracias!

monchyrcg
09/05/12, 12:13:31
No entiendo muy bien lo que quieres decir. Te enseño como hago yo para crear una carpeta, uso mkdir. A lo mejor ayudaría un poco que nos mostrase la linea que te da el error, este error esta claro que es porque la carpeta que quieres acceder no existe.


private File f = new File(Environment.getExternalStorageDirectory().get AbsolutePath()+"/ejercicio/");

public void abrirCrearBD(){
if(!f.exists()){
f.mkdir();
db = SQLiteDatabase.openOrCreateDatabase(f.getAbsoluteP ath() + "/tusRutas.db", null);

}else{
db = SQLiteDatabase.openOrCreateDatabase(f.getAbsoluteP ath() + "/tusRutas.db", null);
}
}

timonoj
11/05/12, 05:28:34
Buenas. Perdona por tardar. Te cuento, al final parece que el sistema de ficheros tenía algún problema, así que he borrado la SD (en el emulador), y ha tirado mucho mejor. Tengo ahora otros problemas similares (todo parece ser una confusión entre cómo especificas archivos y carpetas, ahora me está creando carpetas con los nombres de archivo). EN fin, que a ver si pillo la línea mala. Y sí, yo también uso mkdir. Bueno, yo uso mkdirs(), que genera todos los subdirectorios necesarios hasta el archivo concreto, no sólo el último.