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

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
Аватара пользователя
sanu0074
Сообщения: 80
Зарегистрирован: 30 июн 2013, 20:42
Контактная информация:

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

Сообщение sanu0074 » 30 июн 2013, 20:49

Доброго времени суток. Есть такой вопрос:

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

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

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

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 30 июн 2013, 20:57

делаем запрос по ссылке, получаем ответ в виде InputStream, кормим его в класс File и создаём файл по пути который ведёт на sdcard
R.id.team
Политика на форуме запрещена

Аватара пользователя
sanu0074
Сообщения: 80
Зарегистрирован: 30 июн 2013, 20:42
Контактная информация:

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

Сообщение sanu0074 » 30 июн 2013, 20:58

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

xr0m
Сообщения: 131
Зарегистрирован: 06 апр 2013, 14:01

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

Сообщение xr0m » 30 июн 2013, 21:01

Чем отличается инженер программист от программиста? Инженер умеет быстро находить нужную информацию )

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

Аватара пользователя
sanu0074
Сообщения: 80
Зарегистрирован: 30 июн 2013, 20:42
Контактная информация:

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

Сообщение sanu0074 » 30 июн 2013, 21:07

xr0m писал(а):Чем отличается инженер программист от программиста? Инженер умеет быстро находить нужную информацию )

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

xr0m
Сообщения: 131
Зарегистрирован: 06 апр 2013, 14:01

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

Сообщение xr0m » 30 июн 2013, 21:14

В примере голый код, ты по нему не разобрался? А как ты собираешься писать код на английском (программировать)?
Могу посоветовать использовать гугл траслит, он вполне сносно переводит на русский.

Аватара пользователя
sanu0074
Сообщения: 80
Зарегистрирован: 30 июн 2013, 20:42
Контактная информация:

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

Сообщение sanu0074 » 30 июн 2013, 21:32

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

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 30 июн 2013, 22:09

вы писали:
получаю ответ от сервера
значит как скачать файл с сети уже знаете, вот когда скачали:

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

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. код конечно не проверял, а написал сходу (это что бы не было потом "а у меня не работает"), но смысл понятен.
R.id.team
Политика на форуме запрещена

Аватара пользователя
sanu0074
Сообщения: 80
Зарегистрирован: 30 июн 2013, 20:42
Контактная информация:

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

Сообщение sanu0074 » 30 июн 2013, 22:51

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[], нечего не изменилось

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 01 июл 2013, 00:04

что за ошибку?
но в любом случае так не делается:

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

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

Аватара пользователя
Finch
Сообщения: 439
Зарегистрирован: 16 июл 2012, 21:37

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

Сообщение Finch » 02 июл 2013, 08:58

NetworkOnMainThreadException полюбому
CEO of a company R.id.team

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

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

Сообщение rezak90 » 02 июл 2013, 09:48

Finch писал(а):NetworkOnMainThreadException полюбому
rezak90 писал(а):хотя в асинхронном потоке нужно грузить
R.id.team
Политика на форуме запрещена

Ответить