Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.11.2007, 17:23
NePridymal вне форума Посмотреть профиль Отправить личное сообщение для NePridymal Найти все сообщения от NePridymal
  № 1  
Ответить с цитированием
NePridymal
 
Аватар для NePridymal

Регистрация: Apr 2007
Сообщений: 143
Отправить сообщение для NePridymal с помощью ICQ
По умолчанию Открытие файла по относительной ссылке

Доброго времени суток.

Это не вопрос а совет, основанный на личном опыте. Может кому пригодится (даже точно пригодится).

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

Код:
  var file:File = new File();
  file.url = "app-resource:/Data/Handler.xml";
  
  trace(file.size) // работает, показывает истинный размер, тоесть файл найден
  
  var fileStream:FileStream = new FileStream();
  fileStream.open(file, FileMode.WRITE);
  fileStream.writeUTFBytes(xml);
  fileStream.close();
(кто не знает - "app-resource:/" - AIR-овский встроенный указатель на папку приложения). Интересно, что первая часть кода работала правильно, но при попытке открытия файла - возникала ошибка "файл не найден". Скорее всего это баг, который к счастью легко решается:

Код:
  var tmpFile:File  = new File();
  tmpFile.url = "app-resource:/";

  var file:File = new File();
  file.nativePath = String(tmpFile.nativePath) + "\\Data\\Handler.xml";

  var fileStream:FileStream = new FileStream();
  fileStream.open(file, FileMode.WRITE);
  fileStream.writeUTFBytes(xml);
  fileStream.close();
Конечно, можно получить тот же еффект при использовании File.applicationResourceDirectory, но этот совет касается именно работы "app-resource:/" .


Последний раз редактировалось NePridymal; 05.11.2007 в 17:36.
Старый 05.11.2007, 18:00
screamge вне форума Посмотреть профиль Отправить личное сообщение для screamge Посетить домашнюю страницу screamge Найти все сообщения от screamge
  № 2  
Ответить с цитированием
screamge
Ветеран форума
 
Аватар для screamge

Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
Дело в том что fileStream не любит путь в виде url (пробелы заменяются на «%20»). Второй пример работает потому что хоть урл и выставляется но потом используется nativePath. Вообще я бы посоветовал использовать resolvePath.

В идеале это должно выглядеть так:
Код:
  var file:File = new File();
  file.resolvePath (File.applicationResourceDirectory.nativePath + '/Handler.xml');

  var fileStream:FileStream = new FileStream();
  fileStream.open(file, FileMode.WRITE);
  fileStream.writeUTFBytes(xml);
  fileStream.close();
__________________
Free-lance | Twitter | Me


Последний раз редактировалось screamge; 05.11.2007 в 18:11.
Старый 05.11.2007, 18:31
NePridymal вне форума Посмотреть профиль Отправить личное сообщение для NePridymal Найти все сообщения от NePridymal
  № 3  
Ответить с цитированием
NePridymal
 
Аватар для NePridymal

Регистрация: Apr 2007
Сообщений: 143
Отправить сообщение для NePridymal с помощью ICQ
Я так и понял что fileStream не любит путь в виде url. Просто тогда, когда я писал этот код, о такой штуке как File.applicationResourceDirectory не знал (ну кривая у них документация к AIR-у на сайте адоба. Мне тот .pdf-ник ужасно не нравится, очень плохо написан на мой взгляд). И поэтому стал использовать app-resource:/ , а это можно прописать только к свойству url. Поэтому и сделал так. А тут отписал про особенность использования именно app-resource:/ (так как в документации об этом ничего нет (ну или я не нашел)). Про resolvePath - спасибо, буду пользоваться.

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:53.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:53.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.