Input/Output API содержит следующие компоненты:
Ссылка на архивный файл может быть, как объект file, так и виртуальный каталог.
Степень компрессии определяется в перечислении ArchiveCompressionLevel.
enum ArchiveCompressionLevel {quot;STOREquot;, quot;FASTquot;, quot;NORMALquot;, quot;BESTquot;};
STORE – Компрессия отсутствует. Файл хранится в неизменном виде.FAST – Используется наиболее быстрый метод компрессии. Экономия места от сжатия небольшаяNORMAL – Заданный по умолчанию уровень компрессииBEST – Наилучший, но медленный уровень компрессии.Интерфейс ArchiveManagerObject определяет тип экземпляра объекта Tizen.
Объект tizen.archive дает доступ к Archive API.
Интерфейс ArchiveManager предоставляет методы для работы с архивными файлами.
Открывает архивный файл. После этой операции, можно добавить или получить файлы в и из архива.
Существует несколько режимов работы этого метода.
| Режим | Описание |
|---|---|
| r | Этот режим используется для получения информации о содержимом архивного файла |
| w | Этот режим используется для того, чтобы создать архивный файл и добавлять файлы в архивный файл |
| rw | Этот режим используется для архивации/разархивации |
| a | Этот режим используется для добавления новых файлов в архивный файл |
Для работы с Archive API используются привилегии filesystem.read filesystem.write.
(рис 19.1)
К сожалению, не все функции по работе с файловой системой доступны в эмуляторе Tizen. Продемонстрируем это на следующем примере. Создадим проект Archive. Добавим папку downloads и запишем туда зиповский архив my_archive.zip.
(рис 19.2)
Просмотрим содержание папки downloads (физический каталог)
lt;script type=quot;text/javascriptquot;gt;
var documentsDir;
function onsuccess(files) {
for (var i = 0; i lt; files.length; i++) {
console.log(quot;File Name is quot; + files[i].name); // displays file name
}
}
function onerror(error) {
console.log(quot;The error quot; + error.message + quot; occurred when listing the files in the selected folderquot;);
}
tizen.filesystem.resolve(
apos;downloadsapos;,
function(dir) {
documentsDir = dir;
dir.listFiles(onsuccess, onerror);
}, function(e) {
console.log(quot;Errorquot; + e.message);
}, quot;rwquot;
);
lt;/scriptgt;
(рис 19.3)
Программа не отображает файл my_archive.zip.
Все-таки попытаемся открыть файл my_archive.zip.
lt;script type=quot;text/javascriptquot;gt;
function successCallback(archive) {
console.log(quot;Success, can now read from archive quot; + archive);
}
function errorCallback(error) {
console.log(error);
}
tizen.archive.open(quot;downloads/my_archive.zipquot;, quot;rquot;, successCallback, errorCallback);
lt;/scriptgt;
(рис 19.4)
Программа говорит, что архив не найден.
Пойдем по другому пути. Создадим файл poem.txt в каталоге downloads:
lt;script type=quot;text/javascriptquot;gt;
//Creating the file
var documentsDir;
function onsuccess(files) {
for (var i = 0; i lt; files.length; i++) {
console.log(quot;File Name is quot; + files[i].name); // displays file name
}
var testFile = documentsDir.createFile(quot;poem.txtquot;);
if (testFile != null) {
testFile.openStream(
quot;wquot;,
function(fs) {
fs.write(quot;To be, or not to be: that is the questionquot;);
fs.close();
}, function(e) {
console.log(quot;Error quot; + e.message);
}, quot;UTF-8quot;
);
}
}
function onerror(error) {
console.log(quot;The error quot; + error.message + quot; occurred when listing the files in the selected folderquot;);
}
tizen.filesystem.resolve(
apos;downloadsapos;,
function(dir) {
documentsDir = dir;
dir.listFiles(onsuccess, onerror);
}, function(e) {
console.log(quot;Errorquot; + e.message);
}, quot;rwquot;
);
lt;/scriptgt;
(рис 19.5)
Заархивируем его:
lt;script type=quot;text/javascriptquot;gt;
//Adding to archive
function errorCallback(error) {
console.log(error);
}
function successCallback() {
console.log(quot;donequot;);
}
function progressCallback(opId, val, name) {
console.log(quot;opId: quot; + opId + quot; with progress val: quot; + val);
}
function createSuccess(archive) {
archive.add(quot;downloads/poem.txtquot;, successCallback, errorCallback, progressCallback);
}
tizen.archive.open(quot;downloads/poem.zipquot;, quot;wquot;, createSuccess);
lt;/scriptgt;
(рис 19.6)
А теперь снова попробуем открыть архивный файл:
lt;script type=quot;text/javascriptquot;gt;
function successCallback(archive) {
console.log(quot;Success, can now read from archive quot; + archive);
}
function errorCallback(error) {
console.log(error);
}
tizen.archive.open(quot;downloads/poem.zipquot;, quot;rquot;, successCallback, errorCallback);
lt;/scriptgt;
(рис 19.7)
Как видим, теперь все нормально. Проблема в том, что в Project Explorer мы не видим файлы poem.txt и poem.zip, хотя и можем с ними работать, в то время как наша программа не видит файл some_archive.zip, который мы прекрасно видим в Project Explorer.
(рис 19.8)
Filesystem API предоставляет доступ к файловой системе устройства. Такую файловую систему можно представить, как абстрактную коллекцию разрозненных файловых систем, расположенных в нескольких виртуальных корневых каталогах.
Каждый виртуальный корневой каталог имеет строковое имя. Каждый файл или каталог внутри виртуальной файловой системы адресуется с использованием полностью определенного пути: lt;root namegt;/lt;pathgt; где lt;rootnamegt; - это название виртуального корневого каталога, а lt;pathgt; - это путь к файлу или каталогу относительно этого корневого каталога.
Поддерживаются следующие корневые каталоги
Также поддерживается файловый путь URI. Для доступа к другим путям из виртуального коревого каталога, например, apos;/tmp/apos;, можно использовать путь apos;file:///tmpapos; в качестве параметра месторасположения.
Для получения доступа к конкретному месторасположению, отличного от упомянутого выше, дескриптор файла должен быть получен с помощью вызова filesystem.resolve().
Дескриптор файла представляет, как файл, так и каталог:
isFile присваивается значение true.isDirectory присваивается значение true.Файл можно открыть с помощью операций read и write, используя обработчик событий FileStream. Список файлов и подкаталогов можно получить из каталога, существует метод разрешения файлов или подкаталогов, более удобный, чем обработка списка каталогов.
В именах файлов поддерживаются следующие символы:
В зависимости от используемой платформы могут также поддерживаться и дополнительные символы
Описываются в специальном перечислении при открытии файлов
enum FileMode { quot;rquot;, quot;rwquot;, quot;wquot;, quot;aquot; };
•
r – доступ только для чтения (read-only)rw – доступ как для чтения, так и для записи (read and write)w – доступ для записи (write)a – доступ для добавления (append)Описывается в специальном перечислении
enum FileSystemStorageType { quot;INTERNALquot;, quot;EXTERNALquot; };
INTERNAL – Внутренне хранилище, которое не может быть удалено, например флеш-памятьEXTERNAL – Внешнее хранилище, например, USB-диск или карта памятиОписывается в специальном перечислении
enum FileSystemStorageState {quot;MOUNTEDquot;, quot;REMOVEDquot;, quot;UNMOUNTABLEquot;};
MOUNTED – Устройство смонтировано и доступно для просмотраREMOVED – Устройство удалено (применимо только для внешних хранилищ)UNMOUNTABLE – Устройство не может быть смонтировано в следствие ошибкиИнтерфес FileSystemManagerObject определяет какой экземпляр создаст объект Tizen. Существует объект tizen.filesystem , который позволяет осуществлять доступ к функциональности Filesystem API.
Разберем несколько типичных операций, выполняемых с файловой системой.
В файле config.xml добавьте три строчки как показано ниже
lt;?xml version=quot;1.0quot; encoding=quot;UTF-8quot;?gt;
lt;widget xmlns:tizen=quot;http://tizen.org/ns/widgetsquot; xmlns=quot;http://www.w3.org/ns/widgetsquot; id=quot;http://yourdomain/fs6quot; version=quot;1.0.0quot; viewmodes=quot;maximizedquot;gt;
lt;tizen:application id=quot;0D6KibKof7.fs6quot; package=quot;0D6KibKof7quot; required_version=quot;2.3quot;/gt;
lt;content src=quot;index.htmlquot;/gt;
lt;feature name=quot;http://tizen.org/feature/screen.size.allquot;/gt;
lt;icon src=quot;icon.pngquot;/gt;
lt;namegt;fs6lt;/namegt;
lt;tizen:privilege name=quot;http://tizen.org/privilege/filesystem.readquot;/gt;
lt;tizen:privilege name=quot;http://tizen.org/privilege/filesystem.writequot;/gt;
lt;tizen:privilege name=quot;http://tizen.org/api/filesystemquot;/gt;
lt;tizen:profile name=quot;mobilequot;/gt;
lt;/widgetgt;
Файл index.html
lt;!DOCTYPE htmlgt;
lt;htmlgt;
lt;headgt;
lt;meta charset=quot;utf-8quot;/gt;
lt;meta name=quot;viewportquot; content=quot;width=device-width, initial-scale=1.0, maximum-scale=1.0quot;gt;
lt;meta name=quot;descriptionquot; content=quot;A single-page template generated by Tizen Web IDEquot;/gt;
lt;titlegt;Tizen Web IDE - Tizen - jQuery Mobile - Single-Pagelt;/titlegt;
lt;link rel=quot;stylesheetquot; href=quot;./css/jquery.mobile-1.3.2.cssquot;/gt;
lt;script type=quot;text/javascriptquot; src=quot;./js/jquery-1.9.1.jsquot;gt;lt;/scriptgt;
lt;script type=quot;text/javascriptquot; src=quot;./js/jquery.mobile-1.3.2.jsquot;gt;lt;/scriptgt;
lt;script type=quot;text/javascriptquot; src=quot;./js/main.jsquot;gt;lt;/scriptgt;
lt;link rel=quot;stylesheetquot; href=quot;./css/style.cssquot; /gt;
lt;script type=quot;text/javascriptquot;gt;
//Creating a file
var documentsDir;
function onsuccess(files) {
for (var i = 0; i lt; files.length; i++) {
console.log(quot;File Name is quot; + files[i].name); // displays file name
}
var testFile = documentsDir.createFile(quot;phrase.txtquot;);
if (testFile != null) {
testFile.openStream(
quot;wquot;,
function(fs) {
fs.write(quot;When a father gives to his son, both laugh; when a son gives to his father, both cry. (William Shakespeare)quot;);
fs.close();
}, function(e) {
console.log(quot;Error quot; + e.message);
}, quot;UTF-8quot;
);
}
}
function onerror(error) {
console.log(quot;The error quot; + error.message + quot; occurred when listing the files in the selected folderquot;);
}
tizen.filesystem.resolve(
apos;documentsapos;,
function(dir) {
documentsDir = dir; dir.listFiles(onsuccess,onerror);
}, function(e) {
console.log(quot;Errorquot; + e.message);
}, quot;rwquot;
);
lt;/scriptgt;
lt;/headgt;
lt;bodygt;
lt;/bodygt;
lt;/htmlgt;
Файл index.html
lt;!DOCTYPE htmlgt;
lt;htmlgt;
lt;headgt;
lt;meta charset=quot;utf-8quot;/gt;
lt;meta name=quot;viewportquot; content=quot;width=device-width, initial-scale=1.0, maximum-scale=1.0quot;gt;
lt;meta name=quot;descriptionquot; content=quot;A single-page template generated by Tizen Web IDEquot;/gt;
lt;titlegt;Tizen Web IDE - Tizen - jQuery Mobile - Single-Pagelt;/titlegt;
lt;link rel=quot;stylesheetquot; href=quot;./css/jquery.mobile-1.3.2.cssquot;/gt;
lt;script type=quot;text/javascriptquot; src=quot;./js/jquery-1.9.1.jsquot;gt;lt;/scriptgt;
lt;script type=quot;text/javascriptquot; src=quot;./js/jquery.mobile-1.3.2.jsquot;gt;lt;/scriptgt;
lt;script type=quot;text/javascriptquot; src=quot;./js/main.jsquot;gt;lt;/scriptgt;
lt;link rel=quot;stylesheetquot; href=quot;./css/style.cssquot; /gt;
lt;script type=quot;text/javascriptquot;gt;
//Просмотр списка файлов в каталоге
/* Success event handler */
var documentsDir;
function onsuccess(files) {
for (var i = 0; i lt; files.length; i++) {
console.log(quot;File Name is quot; + files[i].name); // displays file name
}
}
tizen.filesystem.resolve(
apos;documentsapos;,
function(dir) {
documentsDir = dir;
dir.listFiles(onsuccess, onerror);
}, function(e) {
console.log(quot;Errorquot; + e.message);
}, quot;rwquot;
);
lt;/scriptgt;
lt;/headgt;
lt;bodygt;
lt;/bodygt;
lt;/htmlgt;
(рис 19.9)
lt;!DOCTYPE htmlgt;
lt;htmlgt;
lt;headgt;
lt;meta charset=quot;utf-8quot;/gt;
lt;meta name=quot;viewportquot; content=quot;width=device-width, initial-scale=1.0, maximum-scale=1.0quot;gt;
lt;meta name=quot;descriptionquot; content=quot;A single-page template generated by Tizen Web IDEquot;/gt;
lt;titlegt;Tizen Web IDE - Tizen - jQuery Mobile - Single-Pagelt;/titlegt;
lt;link rel=quot;stylesheetquot; href=quot;./css/jquery.mobile-1.3.2.cssquot;/gt;
lt;script type=quot;text/javascriptquot; src=quot;./js/jquery-1.9.1.jsquot;gt;lt;/scriptgt;
lt;script type=quot;text/javascriptquot; src=quot;./js/jquery.mobile-1.3.2.jsquot;gt;lt;/scriptgt;
lt;script type=quot;text/javascriptquot; src=quot;./js/main.jsquot;gt;lt;/scriptgt;
lt;link rel=quot;stylesheetquot; href=quot;./css/style.cssquot; /gt;
lt;script type=quot;text/javascriptquot;gt;
//Read as text
function onsuccess(files) {
for (var i = 0; i lt; files.length; i++) {
console.log(quot;File Name is quot; + files[i].name); // displays file name
if (files[i].isDirectory == false)
files[i].readAsText(
function(str) {
console.log(quot;The file content quot; + str);
}, function(e) {
console.log(quot;Error quot; + e.message);
}, quot;UTF-8quot;
);
}
}
function onerror(error) {
console.log(quot;The error quot; + error.message + quot; occurred when listing the files in the selected folderquot;);
}
var documentsDir;
tizen.filesystem.resolve(
apos;documentsapos;,
function(dir) {
documentsDir = dir;
dir.listFiles(onsuccess,onerror);
}, function(e) {
console.log(quot;Errorquot; + e.message);
}, quot;rwquot;
);
lt;/scriptgt;
lt;/headgt;
lt;bodygt;
lt;/bodygt;
lt;/htmlgt;
(рис 19.10)
lt;!DOCTYPE htmlgt;
lt;htmlgt;
lt;headgt;
lt;meta charset=quot;utf-8quot;/gt;
lt;meta name=quot;viewportquot; content=quot;width=device-width, initial-scale=1.0, maximum-scale=1.0quot;gt;
lt;meta name=quot;descriptionquot; content=quot;A single-page template generated by Tizen Web IDEquot;/gt;
lt;titlegt;Tizen Web IDE - Tizen - jQuery Mobile - Single-Pagelt;/titlegt;
lt;link rel=quot;stylesheetquot; href=quot;./css/jquery.mobile-1.3.2.cssquot;/gt;
lt;script type=quot;text/javascriptquot; src=quot;./js/jquery-1.9.1.jsquot;gt;lt;/scriptgt;
lt;script type=quot;text/javascriptquot; src=quot;./js/jquery.mobile-1.3.2.jsquot;gt;lt;/scriptgt;
lt;script type=quot;text/javascriptquot; src=quot;./js/main.jsquot;gt;lt;/scriptgt;
lt;link rel=quot;stylesheetquot; href=quot;./css/style.cssquot; /gt;
lt;script type=quot;text/javascriptquot;gt;
//Deleting files in the directory
function onsuccess(files) {
for (var i = 0; i lt; files.length; i++) {
if (!files[i].isDirectory) {
documentsDir.deleteFile(
files[i].fullPath,
function() {
console.log(quot;File Deletedquot;);
}, function(e) {
console.log(quot;Errorquot; + e.message);
});
}
}
}
function onerror(error) {
console.log(quot;The error quot; + error.message + quot; occurred when listing the files in the selected folderquot;);
}
var documentsDir;
tizen.filesystem.resolve(
apos;documentsapos;,
function(dir) {
documentsDir = dir;
dir.listFiles(onsuccess,onerror);
}, function(e) {
console.log(quot;Errorquot; + e.message);
}, quot;rwquot;
);
lt;/scriptgt;
lt;/headgt;
lt;bodygt;
lt;/bodygt;
lt;/htmlgt;
(рис 19.11)
MessagePort API предоставляет функциональность для связи с другими приложениями.
Веб-приложения Tizen могут могут общаться с другими веб- или нативными приложениями. Тип данных для коммуникации представляет собой строковую пару quot;ключ-значениеquot;. Сообщения можно пересылать через месседж-порты двух типов:
LocalMessagePort используется для регистрации месседж-порта и подготовке к приему сообщений от других приложений. Для приема сообщений от других приложений необходимо зарегистрировать функцию вызова для локального месседж-порта.RemoteMessagePort используется для отправки сообщений другим приложениям. Информация локального месседж-порта может быть послана другому приложению для двустороннего обмена данными. Можно получать экземпляры интерфейсов LocalMessagePort и RemoteMessagePort с помощью методов therequestLocalMessagePort() и requestRemoteMessagePort() объекта tizen.messageport.
Месседж-порт поддерживает следующие методы для отправки и приемы сообщений:
sendMessage() интерфейса RemoteMessagePort для отправки сообщений другим приложениям. Для приема ответных сообщений от другого приложения в приложении можно определить локальный месседж-порт при отправке сообщения. Можно получать ответное сообщение с помощью вызова метода, зарегистрированного методом addMessagePortListener() интерфейса LocalMessagePort.
(рис 19.12) Коммуникация месседж-порта
Вы можете общаться только с доверенным приложениям, которые подписываются таким же сертификатом, что и ваше приложение, с помощью экземпляров интерфейсов LocalMessagePort и RemoteMessagePort, которые извлекаются с помощью методов TrustedLocalMessagePort() и TrustedRemoteMessagePort () объекта tizen.messageport.
(рис 19.13)
Самостоятельно освоить: создание каталогов, копирование и перенос файлов
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.