Error de solo lectura Al guardar imagen de URL en Android
-
24-10-2019 - |
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.
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".