Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых
[Назад]

Библиотека примеров приложений Java

Оглавление
Работа с классом InetAddress
Работа с классом URL
Просмотр файлов сервера Web
Копирование файлов сервера Web
Контрольная сумма аплета
Потоковые сокеты - сервер
Потоковые сокеты - клиент
Общение в реальном времени
Широковещатель-
ные сообщения

Аплет и расширение сервера Web

Назад Вперед

8.3. Просмотр файлов сервера Web

Пример приложения демонстрирует использование класса URL для создания потока ввода данных, связанного с ресурсом сервера Web. Он позволяет получить документ HTML или текстовый файл, расположенный в каталоге сервера Web и показать его содержимое на консоли.

Исходный текст примера

Архив проекта для Java WorkShop 2.0

Немного теории

Класс URL позволяет решить очень интересную задачу - получение файлов, расположенных в каталогах сервера Web.

Идея заключается в том, чтобы сначала создать для ресурса (текстового файла или документа HTML) объект класса URL, а затем при помощи метода openStream открыть для него входной поток класса InputStream.

Далее этот поток может быть прочитан стандартными средствами и отображен на консоли, либо использован как-нибудь еще.

Описание примера

Получив управление, наше приложение запускает цикл ввода с консоли адресов URL. Если адрес ресурса соответствует существующему документу HTML или текстовому файлу, содержимое объекта будет выведено на консоль:

Enter URL of file ('quit' to exit): 
http://frolov/test.txt
1. Test file
2. Test file
3. Test file
4. Test file
5. Test file
6. Test file
7. Test file
8. Test file
Enter URL of file ('quit' to exit):

Рассмотрим исходный текст приложения.

Всю работу наше приложение делает внутри метода main.

Прежде всего метод main запускает цикл ввода адресов URL:

String s;
while(true)
{    
  System.out.println(
   "\nEnter URL of file ('quit' to exit):");
        
  s = new String(getKbdString());
  if(s.equals("quit"))
    break;
  . . .
}

Внутри тела цикла предпринимается попытка создать объект класса URL для введенного адреса:

URL u;
try
{
  u = new URL(s);
}
catch(MalformedURLException ex)
{
  System.out.println(ex.toString());
  continue;
}

Если адрес указан неправильно, возможно возникновение исключения MalformedURLException. В этом случае наше приложение предлагает пользователю повторить ввод адреса.

Далее мы получаем входной поток, связанный с введенным адресом URL:

InputStream is;
try
{
  is = (InputStream)u.openStream();
}
catch(Exception ex)
{
  System.out.println(ex.toString());
  continue;
}

Получив входной поток, метод main организует чтение данных из этого потока, которое выполняется в цикле:

try
{
  int ch;
  while(true)
  {
    ch = is.read();
    if(ch == -1)
      break;
            
    System.out.print((char)ch);
  }      
  is.close();
}
catch(Exception ex)
{
  System.out.println(ex.toString());
}

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

Прочитанные символы сразу же отображаются на консоли.


Назад Вперед

[Назад]