WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Архив » Загрузка файлов через HTTP

Загрузка файлов через HTTP


Дата публикации: 17-03-2013

Способность загружать (скачивать) файлы через интернет является необходимой возможностью для некоторых приложений. Java позволяет облегчить эту работу, предоставляя ряд классов. Эта статья содержит простое приложение, которое может скачивать файлы по интернет через HTTP.

Как я уже сказал ранее, Java действительно облегчает сетевое программирование. И с определенной комбинацией полезных классов, которые поддерживает Java, сложная задача также значительно упрощается. Процесс скачивания через HTTP опирается на эти классы. Но сначала давайте рассмотрим наши требования: дан URL, с которого мы хотим скачать файл.

Чтобы сделать это, мы должны выполнить следующие шаги:

1. Соединиться с URL.
2. Скачать содержание.

Чтобы соединиться с URL, вы должны сначала создать образец класса java.net.URL, а затем вызвать метод openConnection(). Он возвращает образец java.net.URLConnection. Вы можете получить входной поток этого URL, используя метод getInputStream(). Далее нам остается лишь выбрать содержимое из этого потока и записывать его в файл, то есть в выходной поток.

Звучит просто! И это правда просто. Давайте посмотрим код.

import java.io.*;
import java.net.*;

/** The class to download a file via HTTP. */
public class HttpDownloader {

/** The default filename (eg, when you just give "http://technobuff.com") */
public static final String DEFAULT_FILE = "index.shtml";

//
// Methods
//
/** Returns the filename from the URL. */
public String getFileName(String urlStr) {

// The file name
String file = DEFAULT_FILE;

// Find the last occurence of '/'
int index = urlStr.lastIndexOf('/');
if (index > 0 && index 0) {
out.write(buf, 0, count);
}
}

// Download completed
System.out.println("Done");

}
catch(MalformedURLException ex) {
System.out.println("Failed!");
System.out.println("HttpDownloader: URL Error: " + urlStr);
ex.printStackTrace();
}
catch(IOException ex) {
System.out.println("Failed!");
System.out.println("HttpDownloader: IO Error: " + ex.getMessage());
ex.printStackTrace();
}
finally {

// Close
try {

if (out != null) {
out.close();
}

if (in != null) {
in.close();
}

}
catch(IOException ex) {}
}

}

/** Main. */
public static void main(String[] args) {

try {
HttpDownloader downloader = new HttpDownloader();
downloader.download(args[0]);
}
catch(ArrayIndexOutOfBoundsException ex) {
System.out.println("Usage: java HttpDownloader URL");
}
catch(Exception ex) {
ex.printStackTrace();
}

}

}
Здесь, метод main() проходит на URL, который будет скачан в метод download(). Это - основа приложения. Сначала приложение извлекает имя файла для URL, используя метод getFileName(). В случае, если имя файла не было предоставлено, например, когда URL был http://www.technobuff.com/, оно просто возвращает заданное по умолчанию имя "index.shtml".
Метод скачивания затем создает URL из параметра и открывает соединение с ним. После открытия потока для выходного файла и восстановления входного потока соединения, запускается процесс скачивания. Он включает чтение из вышеупомянутого входного потока и запись в выходной поток. Процесс завершается, когда достигнут конец файла (когда метод read() возвращает -1) и затем закрываются потоки.

Хотя это приложение было очень простое, вы можете легко применить его в большой, мощной утилите. Например, если вы расширяете его для выполнения множественных вычислительных потоков, связанных с загрузкой с различных URL, знайте, что у вас в руках мощное средство.
Домен продается

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Апрель 2024 (1)
Октябрь 2018 (14)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41

Друзья сайта



Случайная цитата

Роберт Кийосаки:

"Когда люди спрашивают: «С чего мне начинать?» или «Как быстро разбогатеть?», мой ответ их часто разочаровывает. Я просто говорю им то, что когда-то говорил мне богатый папа: «Если хочешь быть богатым, нужно быть финансово грамотным»."

Опрос

Какой антивирус Вы используете?

Kaspersky Antivirus
NOD32
Norton Antivirus
Dr.Web
Panda
Аvast!
ClamWin
Другой...