Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_Po_Tp.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.44 Mб
Скачать

2. Класс java.Net.Url в библиотеке классов Java

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

Конструкторы класса URL

Класс URL содержит четыре конструктора. Первый из них создает объект URL в виде сетевого ресурса, адрес URL которого передается конструктору в виде текстовой строки через параметр spec.

Public URL(String spec);

В процессе создания объекта проверяется заданный адрес URL, а также наличие указанного в нем ресурса. Если адрес указан неверно или заданный в нем ресурс отсутствует, возникает исключение MalformedURLException. Это же исключение возникает при попытке использовать протокол, с которым данная система не может работать.

Второй вариант конструктора допускает раздельное указание протокола, адреса узла, номера порта, а также имени файла:

public URL(String protocol, String host, int port, String file);

Третий вариант предполагает использование номера порта, принятого по умолчанию (для протокола HTTP это порт с номером 80):

public URL(String protocol, String host, String file);

Четвертый вариант конструктора допускает указание контекста адреса URL и строки адреса URL:

public URL(URL context, String spec);

Этот конструктор создает URL каталога или файла по его пути spec относительно заданной URL-ссылки context.

Хотя фирма Sun разработала поддержку URL для очень ограниченного числа протоколов – DOC, FILE и HTTP (протокол FILE URL применяется для локальных файлов, а DOC URL использован в броузере Hotjava), следует отметить, что в классе URL имеется возможность создания поддержки других протоколов.

Некоторые методы класса URL

С помощью метода getHost() можно определить имя узла, соответствующего данному объекту URL. Метод getFile() позволяет получить информацию о файле, связанном с данным объектом URL. Метод getPort() предназначен для определения номера порта, на котором выполняется связь для объекта URL. С помощь метода getProtocol() можно определить протокол, с использованием которого установлено соединение с ресурсом, заданным объектом URL.

С помощью метода sameFile() можно определить, ссылаются ли два объекта класса URL на один и тот же ресурс. Для определения идентичности двух адресов можно также воспользоваться методом equals().

Для доступа к ресурсам и их содержимому используются методы openStream(), getContent(), openConnection().

3. Использование класса java.Net.Url

После реализации класса URL часто бывает необходимо получить доступ к ресурсам, на которые он указывает. Класс URL предлагает для этого три основных метода: openStream(); getContent(); openConnection(). Рассмотрим эти методы подробнее.

3.1 Чтение из потока класса InputStream, полученного от объекта класса url

Мeтод openStream() позволяет создать входной поток класса InputStream для чтения файла ресурса, связанного с созданным объектом класса URL. Для выполнения операции чтения из созданного таким образом потока можно использовать любую разновидность метода read(), определенных в классе InputStream. После использования потока его следует закрыть методом close() класса InputStream.

Пару методов (openStream() из класса URL и read() класса InputStream) можно применить для решения задачи получения содержимого двоичного или текстового файла (например, HTML-файл), хранящегося в одном из каталогов сервера Web. После этого обычное приложение или апплет может выполнить локальную обработку полученного файла на компьютере удаленного пользователя.

Например, рассмотрим фрагмент апплета, в котором создается URL к файлу, расположенному на WWW-сервере апплета (откуда апплет загружен на удаленный компьютер), затем открывается поток, связанный с этим файлом, из которого потом читается содержимое HTML-файла:

URL myUrl;

try

{ myUrl=new URL(getCodeBase(),"index.html");

} catch(MalformedURLException e) { /* обработка исключения */ }

try

{ InputStream InStream=myUrl.openStream();

// чтение данных из потока InStream

InStream.close();

} catch(IOException e) { /* обработка исключения */ }

Приведем в качестве примера приложение UrlOpenStream (пример 1), в котором при помощи входного потока считывается html-файл из каталога удаленного сервера Web и его содержимое выводится на консоль:

/*------------- Пример 1. Файл UrlOpenStream.java -------------*/

import java.net.*;

import java.io.*;

class UrlOpenStream

{ public static void main(String args[])

{ URL Url;

try

{// создание URL файла и открытие

// входного потока, связанного с этим файлом

Url=new URL("http://www.microsoft.com");

InputStream InStream=Url.openStream();

// чтение данных из потока InStream

int b;

while ((b=InStream.read())!=-1)

{ System.out.print(""+(char)b);

}

InStream.close(); // закрытие потока

}

catch(Exception e) { System.out.println(e.toString()); }

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]