Я уже немного вытягиваю волосы на это. Предполагается, что следующий метод загрузит файл и сохранит его в указанном на жестком диске месте.
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;
}
}
Кроме того, если файл не существует, он должен создать каталог для файла. (И если в этом месте есть еще один файл, он ничего не должен делать). Однако по какой-то причине метод mkdirs() никогда не создает каталог. Я пробовал все из явных круглых скобок, чтобы явно создать родительский класс файлов, и ничего не работает. Я вполне уверен, что диск доступен для записи, поскольку он только вызывается после того, как это уже определено, и это верно после выполнения его во время отладки. Таким образом, метод выходит из строя, потому что родительские каталоги не создаются. Может ли кто-нибудь сказать мне, если что-то не так с тем, как я его называю?
Кроме того, если это помогает, вот источник для файла, в который я его вызываю:
Спасибо