Pregunta

Estoy tratando de guardar una imagen de una URL web en una aplicación de Android, sin embargo, cuando la ejecuto, el Log Cat lanza una excepción diciendo que es "solo leer". No sé qué está pasando.

Aquí está mi clase de descarga:

  public class ImageDownload {

public static void downloader(String imageURL, String fileName) { 
        try {
                URL url = new URL("http://www.exampleurl.com/" + imageURL); 
                File file = new File(fileName);


                URLConnection con = url.openConnection();

                InputStream is = con.getInputStream();
                BufferedInputStream bis = new BufferedInputStream(is);

                ByteArrayBuffer baf = new ByteArrayBuffer(50);
                int current = 0;
                while ((current = bis.read()) != -1) {
                        baf.append((byte) current);
                }

                FileOutputStream fos = new FileOutputStream(file);
                fos.write(baf.toByteArray());
                fos.close();

        } catch (IOException e) {
                Log.d("Downloader", "Error: " + e);
        }

}
}

Cuando ejecuto esto, esto es lo que obtengo del logcat:

DEBUG/Downloader(22112): Error: java.io.FileNotFoundException: /example.gif (Read-only file system)

Cualquier ayuda sería genial. Gracias.

¿Fue útil?

Solución

Intente guardar en /sdcard/example.gif

Otros consejos

El directorio que el new File(fileName); Los valores predeterminados de la llamada no se pueden escribir. Para obtener la ruta al directorio de escritura de archivos para el contexto actual, usa getFilesDir (). Asi que new File(getFilesDir()+fileName); equivale al comportamiento de Java habitual de abrir un archivo en el directorio "actual".

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top