Developer 101 Ответов: 2

Я не могу загрузить несколько изображений.


Нет никаких проблем в загрузке 1 изображения, но когда я пытаюсь загрузить другое изображение, оно перезаписывает предыдущее изображение.
Короче говоря, я могу скачать только 1 Изображение.

Мой код приведен ниже.Скажите мне правильный код, чтобы можно было загрузить несколько изображений.


Поток перенаправляет = нуль;

Файл myDir = Environment.getExternalStorageDirectory();
File fileDir = новый файл(myDir.getAbsolutePath() + "/обои");
fileDir.команды mkdir();

Строка имяфайла = строка.формат("wallpaper.jpg" ,система.currentTimeMillis());
File outFile = новый файл(fileDir,fileName);
Toast.makeText(контекст, "загрузка завершена", тост.LENGTH_SHORT).показать();
пробовать {
outputStream = новый файл OutputStream(outFile);
растрового изображения.компресс(растровое изображение.CompressFormat.JPEG, 100, outputStream);
клиенту OutputStream.флеш();
клиенту OutputStream.рядом();

Намерение намерение = новое намерение(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
намерениях.метод setdata(URI-адрес.fromFile(выходной_файл));
context.sendBroadcast(намерение);

} catch (FileNotFoundException e) {
е.печатные();
} catch (IOException e) {
е.печатные();
}

Что я уже пробовал:

Я не знаю, что еще делать с этим кодом.

2 Ответов

Рейтинг:
1

OriginalGriff

Это потому, что вы указываете имя файла абсолютно:

String fileName = String.format("wallpaper.jpg" ,System.currentTimeMillis());
File outFile = new File(fileDir,fileName);

Если вы специально не измените это имя файла, каждый загруженный файл будет отправляться в один и тот же файл, перезаписывая все остальные.

Возможно, вы захотите подумать о том, как вы хотите хранить их: различные папки для каждого дня или недели, возможно, имена файлов с отметками даты и времени, увеличивающиеся числа ... есть много вариантов, которые вы можете выбрать.


Developer 101

спасибо за ваш ответ ... не могли бы вы дать мне код для имен файлов с отметкой времени?

OriginalGriff

Ты ведь шутишь, правда?
Ваше имя пользователя подразумевает, что вы являетесь разработчиком: просто получите текущую дату и время, преобразуйте ее в строку ("yyyyMMDDHHmmss.sss" - хорошая идея, так как она хорошо сортируется) и используйте ее.
Одна строка кода на большинстве языков ...

Рейтинг:
0

Richard MacCutchan

String fileName = String.format("wallpaper.jpg" ,System.currentTimeMillis());

Вы забыли добавить спецификацию формата для значения времени, оно должно быть:
String fileName = String.format("wallpaper_%d.jpg" ,System.currentTimeMillis());

Хотя значение миллисекунд несколько длинновато, поэтому вы можете сократить его.