Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flash Приложения: AIR, Zinc и тд. (http://www.flasher.ru/forum/forumdisplay.php?f=94)
-   -   Сохранение файлов в нужную директорию (http://www.flasher.ru/forum/showthread.php?t=172529)

wlad 12.12.2011 05:44

Сохранение файлов в нужную директорию
 
Дамы и господа!

Еще раз уже несколько ранее обсуждавшаяся тема о сохранении файлов... Ее итог: на рабочем столе файлы можно сохранять с помощью

Код AS3:

var s:String = "Идет эксперимент"; // строка, которая будет записана в файл
var file:File = File.desktopDirectory.resolvePath("savedfile_3.txt"); // создаем на рабочем столе файл, savedfile.txt. Можно подписать любое имя и расширение

а далее не очень хитрым образом, аналогично с другими языками
Код AS3:

        var fileStream:FileStream = new FileStream(); // создаем поток
        fileStream.open(file, FileMode.WRITE); // открываем файл в режиме записи
        fileStream.writeMultiByte(s, "Windows-1251"); // сохраняем эту строку в файл savedfile.txt в кодировке Windows-1251.
        fileStream.close(); // закрываем поток

Объект File - путь к файлу или каталогу... Из перевода на не очень хороший русский http://help.adobe.com/ru_RU/FlashPla...stem/File.html и дальнейших экспериментов становится очевидным, что возможны сохранения в папке "Администратор" и папке "Мои документы"

Код AS3:

// это сохранение в папке "Администратор"...
//        var file:File = File.userDirectory.resolvePath("savedfile_3.txt");
 
// это сохранение в папке "Мои Документы"
//        var file:File = File.documentsDirectory.resolvePath("savedfile_3.txt");

Как добиться того, чтобы сохранение фалов было именно в том каталоге (в той директории), в которой находится сам продукт, не очень понятно. Пока у меня не вышло...

Может быть, кто-то знает?


С уважением

Влад

goodguy 12.12.2011 08:50

Цитата:

в которой находится сам продукт, не очень понятно
С этим есть проблемы безопастности. Лучше сохранять в другую директорию, например в папку пользователя

А вообще, сохранение файла в нужную директорию - довольно простая задача в эйр, нужно лишь задать ему нативный путь:
Код AS3:

var s:String = "строка для проверки";
var file:File = new File();
file.nativePath        = file.resolvePath("C:/mytext.txt").nativePath; // обратите внимание на то, что слеш передний, а не задний, как обычно указывается в винде для локальных файлов \. Эйр сама создаст правильный путь в операционной системе
var fs:FileStream        = new FileStream();
fs.open(file, FileMode.WRITE);
fs.writeMultiByte(s, "Windows-1251");
fs.close();

А дальше все как обычно, открываем поток, пишем, закрываем.

trng 12.12.2011 13:35

По ссылке, которую вы дали (http://help.adobe.com/ru_RU/FlashPla...stem/File.html) читаем:

Цитата:

File.applicationStorageDirectory — каталог хранилища, который является уникальным для каждого установленного приложения AIR.
File.applicationDirectory — каталог только для чтения, в который устанавливается приложение (вместе с установленными активами).
...
Каталог хранилища приложения особенно полезен. Это каталог хранилища для каждого отдельного приложения AIR. Он определяется свойством File.applicationStorageDirectory.

Нельзя добавлять в каталог приложения (в который установлено приложение AIR) или удалять из этого каталога содержимое. Это может повредить приложение AIR и сделать подпись приложения недействительной. Запись в каталог приложения запрещена в AIR по умолчанию, так как доступ на запись в этот каталог не предоставлен всем учетным записям пользователя во всех операционных системах. Каталог хранилища приложения можно использовать для записи внутренних файлов приложения. Каталог документов можно использовать для записи файлов, которые пользователь будет использовать за пределами приложения (например, отредактированные изображения и текстовые файлы).
Обратите внимание на фразу доступ на запись в этот каталог не предоставлен всем учетным записям пользователя во всех операционных системах.
А с applicationStorageDirectory таких проблем нет!


В порядке эксперимента - вот так работает (под виндой с правами администратора):

Код AS3:

var f:File = new File(File.applicationDirectory.resolvePath('testfile.txt').nativePath);
trace(f.nativePath);
var fs:FileStream = new FileStream();
fs.open(f, FileMode.WRITE);
fs.writeMultiByte('тест', 'x-cp1251');
fs.close();

Но в контексте вышесказанного - а оно вам надо?

wlad 12.12.2011 14:37

О други моя!

Большое спасибо всем Вам. Пошло... В рамах моих планов смелых пользователь сам должен быть в состоянии создавать некоторые файлы...


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

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