План
1 Пакет java.net. Клас URL
2 Конструктори класу URL
3 Методи класу URL
1 Пакет java.net. Клас URL
Класи для роботи з мережею в Java розташовуються в пакеті java.net, і найпростішим з них є клас URL. З його допомогою можна сконструювати uniform resource locator (URL), що має наступний формат:
protocol://host:port/resource
Тут protocol - назва протоколу, використовуваного для зв'язку; host - IP-Адреса або DNS-ім'я сервера, до якого виробляється обіг; port - номер порту сервера (якщо порт не зазначений, то використовується значення за замовчуванням для зазначеного протоколу); resource -ім'я запитуваного ресурсу, причому воно може бути складовим, наприклад:
ftp://myserver.ru/pub/docs/Java/JavaCourse.txt
2 Конструктори класу URL
У цьому класі передбачено чотири конструктори.
Перший з них створює об'єкт URL для мережного ресурсу, адреса URL якого передається у вигляді текстового рядка через єдиний параметр spec:
public URL(String spec);
У процесі створення об'єкта перевіряється задана адреса URL.. Якщо адреса зазначена невірно, виникає виключення MalformedURLException. Це ж виключення виникає при спробі використовувати протокол, з яким дана система не може працювати.
Другий варіант конструктора класу URL допускає роздільна вказівка протоколу, адреси вузла, номера порту, а також ім'я файлу:
public URL(String protocol, String host, int port, String file);
Третій варіант припускає використання номера порту, прийнятого за замовчуванням:
public URL(String protocol, String host, String file);
Для протоколу HTTP, наприклад, це порт із номером 80.
І, нарешті, четвертий варіант конструктора допускає вказівка контексту адреси URL і рядка адреси URL:
public URL(URL context, String spec);
Рядок контексту дозволяє вказувати компоненти адреси URL, відсутні в рядку spec, такі як протокол, ім'я вузла, файлу або номер порту.
3 Методи класу URL
Коротко розглянемо самі цікаві методи, певні в класі URL.
Метод openStream дозволяє створити вхідний потік для читання файлу ресурсу, пов'язаного зі створеним об'єктом класу URL:
public final InputStream openStream();
Для виконання операції читання зі створеного в такий спосіб потоку ви можете використовувати метод read, певний у класі InputStream.
За допомогою методу getHost ви можете визначити ім'я вузла, що відповідає даному об'єкту URL:
public String getHost();
Метод getFile дозволяє одержати ім'я файлу, пов'язаного з даним об'єктом URL:
public String getFile();
Метод getPortt призначений для визначення номера порту, на якому виконується зв'язок для об'єкта URL:
public int getPort();
За допомогою методу getProtocol ви можете визначити протокол, з використанням якого встановлене з'єднання з ресурсом, заданим об'єктом URL:
public String getProtocol();
Метод getRef повертає текстовий рядок посилання на ресурс, що відповідає даному об'єкту URL:
public String getRef();
Метод hashCode повертає хэш-код об'єкта URL:
public int hashCode();
Ви можете використовувати метод equals для визначення ідентичності адрес URL, заданих двома об'єктами класу URL:
public boolean equals(Object obj);
Якщо адреси URL ідентичні, метод equals повертає значення true, якщо немає - значення false.
Метод toExternalForm повертає текстовий рядок зовнішнього подання адреси URL, певного даним об'єктом класу URL:
public String toExternalForm();
Метод toString повертає текстовий рядок, що представляє даний об'єкт класу URL:
public String toString();
Метод openConnection
Метод openConnection призначений для створення каналу між додатком і мережним ресурсом, представленим об'єктом класу URL:
public URLConnection openConnection();
Метод printURLAddresssInfo
Метод printURLAddresssInfo виводить на консоль текстове подання об'єкта URL і його окремих компонентів, витягнутих відповідними методами класу URL:
System.out.println("URL Address: " + u);
System.out.println("Host: " + u.getHost());
System.out.println("Port: " + u.getPort());
System.out.println(
"Protocol: " + u.getProtocol());
System.out.println(
"Filename: " + u.getFile());
System.out.println(
"Reference: " + u.getRef());
System.out.println(
"External Form: " + u.toExternalForm());