Путь к файлу для J2ME FileConnection? - PullRequest
2 голосов
/ 22 марта 2010

Я пишу мидлет, который должен записать файл.Для этого я использую FileConnection из JSR-75.

Предполагается, что этот MID-лет будет работать на как можно большем количестве устройств (в идеале, на всех устройствах MIDP 2.0 с поддержкой JSR-75).

На нескольких эмуляторах и в HTC Touch Pro2 я могу без труда использовать следующий код для получения корня файловой системы:

Enumeration drives = FileSystemRegistry.listRoots();
String root = (String) drives.nextElement();
String path = "file:///" + root;

Однако в эмуляторе Nokia S60 5-й редакции при попытке открытьFileConnection к этому пути вызывает исключение java.lang.SecurityException.По-видимому, устройства S60 не разрешают подключения к корню файловой системы.Я понимаю, что могу использовать что-то вроде System.getProperty ("fileconn.dir.photos"), но это также не поддерживается на всех устройствах.

Итак, мой актуальный вопрос : чтонаилучший подход к получению пути для создания FileConnection, который обеспечивает максимальную переносимость?

Спасибо.

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

Ответы [ 2 ]

2 голосов
/ 22 марта 2010

Предполагается, что вы должны открывать доступ только для чтения к корням, чтобы выяснить, какую папку они содержат.

Как правило, при открытии соединения read_write с папкой выдается исключение SecurityException, попробуйте открытьсоединение только для чтения, позволяющее просматривать подпапки и находить доступное для записи.

Специально для Symbian (и других платформ, достаточно продвинутых для обеспечения защищенных ячеек данных для ваших MID-летов), вы можете использовать System.getProperty("fileconn.dir.private");найти область для записи.

0 голосов
/ 22 марта 2010

Я скажу вам, что мы делаем.У нас есть тестовое приложение, которое просто определяет корень файловой системы и корень SD-карты, если это применимо.Мы устанавливаем это как параметр JAD.Код читает его из файла Jad.Поскольку вам не нужно перекомпилировать jar для разных устройств, это работает очень хорошо, просто измените параметр jad для телефона с другим корневым каталогом файловой системы.

...