Назад
Вперед
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());
}
Здесь нет ничего особенного - мы читаем из
потока, связанного с удаленным ресурсом,
расположенным где-то в сети, как из входного
потока, созданного для локального файла.
Прочитанные символы сразу же отображаются на
консоли.
Назад Вперед |