Страница 1 из 1

Скачать файл из сети на SD карту

Добавлено: 30 июн 2013, 20:49
sanu0074
Доброго времени суток. Есть такой вопрос:

получаю ответ от сервера в виде XML-сообщения и разбираю его. Есть ссылки на файлы кот лежат на сервере (например это картинки), нужно скачать эти файлы в папку на SD карту (они будут в качестве кэша), и при следующем таком же запросе с android-приложения, сначала проверяем существование такого файла на SD-карте в нужной папке а потом если они есть - грузим с SD, а если нет то из сети.

Далеко не хочу пока копать, а для начала хочу разобраться в том, как загрузить файлы из сети на SD-карту и тут же отобразить их в activity??

p.s. я новичек в разработке android, буду очень благодарен за полезные ответы :)

Re: Скачать файл из сети на SD карту

Добавлено: 30 июн 2013, 20:57
rezak90
делаем запрос по ссылке, получаем ответ в виде InputStream, кормим его в класс File и создаём файл по пути который ведёт на sdcard

Re: Скачать файл из сети на SD карту

Добавлено: 30 июн 2013, 20:58
sanu0074
rezak90 писал(а):делаем запрос по ссылке, получаем ответ в виде InputStream, кормим его в класс File и создаём файл по пути который ведёт на sdcard
а примерчик простенький можете набросать?

Re: Скачать файл из сети на SD карту

Добавлено: 30 июн 2013, 21:01
xr0m
Чем отличается инженер программист от программиста? Инженер умеет быстро находить нужную информацию )

Объяснение
Готовый код

Re: Скачать файл из сети на SD карту

Добавлено: 30 июн 2013, 21:07
sanu0074
xr0m писал(а):Чем отличается инженер программист от программиста? Инженер умеет быстро находить нужную информацию )

Объяснение
Готовый код
спасибо канешно за Help, но это я гуглил, хотелось бы на русском, т.к. с английским не оч владею...

Re: Скачать файл из сети на SD карту

Добавлено: 30 июн 2013, 21:14
xr0m
В примере голый код, ты по нему не разобрался? А как ты собираешься писать код на английском (программировать)?
Могу посоветовать использовать гугл траслит, он вполне сносно переводит на русский.

Re: Скачать файл из сети на SD карту

Добавлено: 30 июн 2013, 21:32
sanu0074
xr0m писал(а):В примере голый код, ты по нему не разобрался? А как ты собираешься писать код на английском (программировать)?
Могу посоветовать использовать гугл траслит, он вполне сносно переводит на русский.
в коде показано как записать текст в файл и вывести содержимое в Toast, а мне надо то как сохранить файл на SD из сети и потом отобразить его в activity!

Re: Скачать файл из сети на SD карту

Добавлено: 30 июн 2013, 22:09
rezak90
вы писали:
получаю ответ от сервера
значит как скачать файл с сети уже знаете, вот когда скачали:

Код: Выделить всё

File file = new File("/mnt/sdcard/testfile.xml");
OutputStream out=new FileOutputStream(file);
  byte buf[]=new byte[1024];
  int len;
  while((len=is.read(buf))>0)
  out.write(buf,0,len);
  out.close();
  inputStream.close();
is - это InputStream который получаем из сети
P.S. код конечно не проверял, а написал сходу (это что бы не было потом "а у меня не работает"), но смысл понятен.

Re: Скачать файл из сети на SD карту

Добавлено: 30 июн 2013, 22:51
sanu0074
P.S. код конечно не проверял, а написал сходу (это что бы не было потом "а у меня не работает"), но смысл понятен.
написал, вот, пример выдает "error 2":

Код: Выделить всё

 try {
				InputStream is = (InputStream) new URL("http://yandex.st/morda-logo/i/logo.png").getContent();
				
				File file = new File("/mnt/sdcard/testfile.png");

				OutputStream out=new FileOutputStream(file);
				
				  byte buf[]=new byte[1024];
				
				  int len;
				
				  while((len=is.read(buf))>0)
				
				  out.write(buf,0,len);
				
				  out.close();
				
				  is.close();
				
			} catch (MalformedURLException e) {
				// TODO Auto-generated catch block
				Toast.makeText(this, "error", Toast.LENGTH_LONG).show();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				Toast.makeText(this, "error 2", Toast.LENGTH_LONG).show();
			}
пробовал создавать пустой файл и увеличивать размер byte buf[], нечего не изменилось

Re: Скачать файл из сети на SD карту

Добавлено: 01 июл 2013, 00:04
rezak90
что за ошибку?
но в любом случае так не делается:

Код: Выделить всё

InputStream is = (InputStream) new URL("http://yandex.st/morda-logo/i/logo.png").getContent();
хотя в асинхронном потоке нужно грузить

Re: Скачать файл из сети на SD карту

Добавлено: 02 июл 2013, 08:58
Finch
NetworkOnMainThreadException полюбому

Re: Скачать файл из сети на SD карту

Добавлено: 02 июл 2013, 09:48
rezak90
Finch писал(а):NetworkOnMainThreadException полюбому
rezak90 писал(а):хотя в асинхронном потоке нужно грузить