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 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Март 2017 (1)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)
Ноябрь 2015 (1)

Карта сайта: 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

Друзья сайта

Хотите продать свой сайт?
- Мы быстро и удобно для Вас сможем его купить:
  • Заявка на продажу сайта
  • Раcсматриваем цены на каждый сайт в индивидуальном порядке.

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

    Неизвестный автор:

    "Если ты загнал под бан – сайт и блог в придачу, про тебя на серче скажут – «криворукий мальчик»."

    Опрос

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

    Internet Explorer
    Google Chrome
    Mozilla Firefox
    Netscape Navigator
    Maxthon Browser
    Opera
    Mozilla Suite
    SeaMonkey
    K-Meleon
    Safari
    Amaya
    Avant Browser
    SlimBrowser
    Другой...