He estado sacando mi pelo de esto por un tiempo. Se supone que el siguiente método descarga un archivo y lo guarda en la ubicación especificada en el disco duro.Método de archivo mkdirs() que no funciona en android/java
private static void saveImage(Context context, boolean backgroundUpdate, URL url, File file) {
if (!Tools.checkNetworkState(context, backgroundUpdate))
return;
// Get the image
try {
// Make the file
file.getParentFile().mkdirs();
// Set up the connection
URLConnection uCon = url.openConnection();
InputStream is = uCon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
// Download the data
ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current = 0;
while ((current = bis.read()) != -1) {
baf.append((byte) current);
}
// Write the bits to the file
OutputStream os = new FileOutputStream(file);
os.write(baf.toByteArray());
os.close();
} catch (Exception e) {
// Any exception is probably a newtork faiilure, bail
return;
}
}
Además, si el archivo no existe, se supone que debe crear el directorio del archivo. (Y si ya hay otro archivo en ese lugar, simplemente no debería hacer nada). Sin embargo, por alguna razón, el método mkdirs() nunca hace el directorio. He intentado todo desde paréntesis explícitos, hasta hacer explícitamente la clase de archivo padre, y nada parece funcionar. Estoy bastante seguro de que la unidad se puede escribir, ya que solo se invoca después de que ya se haya determinado, también es cierto después de ejecutarla durante la depuración. Entonces, el método falla porque los directorios principales no están hechos. ¿Alguien puede decirme si hay algún problema con la forma en que lo estoy llamando?
Además, si ayuda, aquí está el origen del archivo que estoy llamando en:
Gracias
No puedo creerlo, eso funcionó. Me siento como un idiota ahora. Por otro lado, sin embargo, estaba trabajando mágicamente otras otras revisiones del proyecto, extraño. Muchas gracias. –