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

Особенности спецификации Sony Ericsson

Реализация JSR-75 на телефонах Sony Ericsson имеет некоторые ограничения:

  • Вы не можете получить доступ к папкам Games и Themes.

  • Файлы и каталоги чувствительны к регистру.

  • Длина пути ограничена 120 символами.

Более подробную информацию об ограничениях для телефонов Sony Ericsson можно найти в документе http://developer.sonyericsson.com/site/global/docstools/java/p_java.jsp.

Свойства системы

Убедиться в том, что система поддерживает FileConnection API, можно выполнив команду:

System.getProperty("microedition.io.file.FileConnection.version");

Если FileConnection API поддерживается, то она вернет "1.0".

Классы и интерфейсы FileConnection api

FileConnection API дает возможность создавать и удалять файлы и папки, получать список файлов в папке, устанавливать права, получать информацию о файлах и выполнять операции ввода-вывода. Ниже приведены важнейшие классы и интерфейсы:

  • ConnectionClosedException возникает если метод вызывает FileConnection в то время как соединение разорвано.

  • Класс FileSystemRegistry — главный системный реестр. С его помощью можно получить список примонтированных корневых папок (метод listRoots()). Он также содержит методы для регистрации "слушателей", которые оповещаются в случае добавления или удаления файловой системы в течение выполнения программы.

  • FileSystemListener — интерфейс, используемый для получения уведомлений о создании и удалении корневых файловых систем.

  • FileConnection — интерфейс, который используется для доступа к файлам и каталогам устройства. Он является расширением интерфейса Connection и содержит ряд методов для работы с файлами и папками.

Использование FileConnection API

Поскольку для работы с файловой системой FileConnection API использует Generic Connection Framework, процедура создания FileConnection похожа на создание простого GCF соединения. Единственным отличием будет указание URL адреса. Для создания FileConnection, используйте метод open класса Connector:

Connector.open(string URL);

URL адрес должен иметь вид: "file://localhost/c:/" или "file:///c:/" для внутренней памяти устройства; и "file://localhost/c:/" или "file:///e:/" для съемных карт памяти.

Так, для получения доступа к папкам внутренней памяти устройства нужно создать FileConnection объект, используя следующий URL:

FileConnection fc = (FileConnection)Connector.open("file:///c:/");

Поскольку метод Connector.open() не позволяет указать права доступа, созданный FileConnection объект может выполнять как операции чтения, так и записи.

Указанный при создании объекта FileConnection URL может ссылаться на несуществующий файл или каталог.

Не забывайте закрывать FileConnection после выполнения всех необходимых действий:

fc.close();

FileConnection, ссылающийся на несуществующий файл, не может использовать многие операции. Так попытка открыть InputStream или OutPutStream приведут к возникновению исключительной ситуации java.io.IOException. Единственное, чем Вы можете воспользоваться — это методы create() и mkdir(), создающие файл и каталог соответственно. Для того, чтобы убедиться в существовании требуемого файла, воспользуйтесь методом exists():

fc.exists();

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

fc.create();

Для создания каталога используется другой метод

fc.mkdir();

Для удаления файлов и каталогов используется метод

fc.delete();

Чтобы узнать содержание папки, на которую ссылается объект FileConnection, используйте следующий код:

Enumeration e = fc.list();

while (e.hasMoreElements())

{

System.out.println(((String)e.nextElement()));

}

В результате будут выведены все файлы и папки, содержащиеся в указанном каталоге. В конце названий папок будет стоять символ "/". Вы можете получить информацию об содержании папки и другим, более продвинутым способом.

list(String filter, boolean includeHidden)

Этот метод возвращает контент, удовлетворяющий условиям фильтра. Приведем простейший пример фильтра. Получим список mp3 файлов, содержащихся в папке: "*.mp3". Второй параметр указывает, должны ли отображаться файлы, помеченные как скрытые. Этот метод возвращает папки и файлы в произвольном порядке. Вы должны самостоятельно позаботиться об их сортировке.

FileSystemRegistry имеет метод listRoots(), который позволяет получить список всех примонтированных корневых файловых систем. Список возвращается как Enumeration

Enumeration e = FileSystemRegistry.listRoots();

while (e.hasMoreElements()) {

String rootName = (String)e.nextElement();

System.out.println("mounted root:"+rootName);

}