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

3.2 Получение содержимого файла, связанного с объектом класса url

Метод getContent() открывает поток к ресурсу в точности также, как это делает метод openStream(), но затем пытается определить MIME потока (тип файла) и конвертировать поток в объект Java. Зная тип MIME потока данных, URL может передать поток данных методу, созданному для работы именно с этим типом данных. Этот метод должен выдать данные, инкапсулированные в соответствующем типе объекта Java. Например, если создан URL, указывающий на изображение в формате GIF, метод getContent() должен понять, что поток относится к типу MIME «image/gif», и вернуть экземпляр класса Image. Объект Image будет содержать копию GIF-картинки. Для того, чтобы метод getContent() вернул объект в соответствии с MIME, необходимо определить для этого MIME собственный класс ContentHandler, который в конечном счете и обрабатывает данные ресурса, когда вызывается метод getContent() класса URL или URLConnection.

Практически, можно использовать метод getContent() для получения текстовых файлов, расположенных в сетевых каталогах. К сожалению, метод getContent() непригоден для получения документов HTML, так как для данного ресурса не определен обработчик содержимого, предназначенный для создания объекта. Метод getContent не способен создать объект из чего-либо другого, кроме как из текстового файла.

Приведем пример использования метода getContent() в приложении. Сначала создается объект URL, потом вызывается метод getContent(), чтобы восстановить ресурс в объекте Java, а затем применяется операция instanceof для определения того, какой тип объекта возвращен:

URL myUrl; Object obj;

try

{ myUrl=new URL

("http://www.vvsu.ru/cts/teachers/arhipova/t.txt");

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

try

{ obj=myUrl.getContent();

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

if(obj instanceof String) { /* действия, если строка */ }

else { /* тип неизвестен, действия по умолчанию */ }

Рассмотрим в качестве примера апплет UrlGetContent (пример 2), в котором получается содержимое файла из каталога сервера Web (с которого загружен апплет). В случае, если файл содержит простой текст, то содержимое файла выводится в текстовую область, введенную в апплет:

/*------------- Пример 2. Файл UrlGetContent.java -------------*/

import java.applet.*;

import java.awt.*;

import java.net.*;

public class UrlGetContent extends Applet

{ String S; Object obj;

public void init()

{ resize(600, 400);

// создание текстовой области и введение ее в апплет

TextArea text=new TextArea(30,80);

add(text);

URL Url;

try

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

// и получение содержимого этого файла

Url=new URL(getCodeBase(),"UrlGetContent.java");

obj=Url.getContent();

// проверка, является ли содержимое текстом

if(obj instanceof String) { S=(String)obj; }

else { S="Unknown object"; }

}

catch(Exception e) { S=e.toString(); }

// вывод либо содержимого файла, либо предупреждения

text.setText(S);

}

public void paint(Graphics g){}

}

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