![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Здравствуйте! Работаю с AIR. Есть такой алгоритм:
1. xml файл загружается в приложение с помощью URLLoader; 2. считывается из него информация; 3. этот же xml файл открывается для записи новой информации с помощью FileStream.open(); И вот на 3 пункте выдает "Error #3013: File or directory is in use". После многих экспериментов, выяснил что этот xml файл в файловой системе используется моим URLLoader -ом, который раньше грузил этот файл. Вызов метода close() URLLoader-а и его обнуление не помогает. XML дальше используется приложением и к нему не подобраться. Как убить эту связь? PS: Если открывать для чтения, ошибок нет, а вот записать не позволяет.
__________________
Я мало чего умею, но зато хорошо умею учиться... Последний раз редактировалось HardCoder; 20.11.2011 в 12:36. |
|
|||||
|
Вот набросал:
package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.filesystem.File; import flash.filesystem.FileMode; import flash.filesystem.FileStream; import flash.net.URLLoader; import flash.net.URLRequest; public class Air extends Sprite { public function Air() { stage.addEventListener(MouseEvent.CLICK, onClick); } private var urlLoader: URLLoader; private function onClick(e: MouseEvent):void { urlLoader = new URLLoader(new URLRequest('D://myXML.xml')); urlLoader.addEventListener(Event.COMPLETE, onLoad); stage.removeEventListener(MouseEvent.CLICK, onClick); } private var fs: FileStream; private function onLoad(e: Event):void { stage.addEventListener(MouseEvent.CLICK, onClick2); } private function onClick2(e: MouseEvent):void { stage.removeEventListener(MouseEvent.CLICK, onClick2); fs = new FileStream(); var file: File = File.getRootDirectories()[1]; file = file.resolvePath('myXML.xml'); fs.open(file, FileMode.WRITE); var xml: XML = <b>2</b>; fs.position = 0; fs.writeUTFBytes(xml.toXMLString()); fs.close(); } } }
__________________
http://www.chessmax.ru |
|
|||||
|
Удивительно, но ваш код работает. Пойду копаться в своих мемуарах.
Добавлено через 4 часа 57 минут Вот в чем проблема! У меня файл открывается для записи сразу после загрузки. Поэтому и нет доступа. Если в коде Inet_PC метод поместить в функцию onLoad(), то будут те же ошибки что и у меня. Что делать, если я хочу загрузить данные, и моментально после загрузки обработать их перезаписать назад в файл, не ожидая чтобы прошло какое-то время. Даже если поставить таймер, то как узнать сколько времени нужно чтобы файл стал снова доступен?
__________________
Я мало чего умею, но зато хорошо умею учиться... |
|
|||||
|
Я, просто, не умею работать с байтами. Не знаю как получить обьект xml из FileStream
![]()
__________________
Я мало чего умею, но зато хорошо умею учиться... |
|
|||||
|
Спасибо большое. Даже не представлял что все так просто. Надо бы поискать, как делать такое же с другими типами файлов, например mp3 -> Sound и т.д.
__________________
Я мало чего умею, но зато хорошо умею учиться... |
|
|||||
|
Цитата:
__________________
http://www.chessmax.ru |
![]() |
![]() |
Часовой пояс GMT +4, время: 06:48. |
|
|
« Предыдущая тема | Следующая тема » |
|
|