JavaScript. Подробное руководство, 6-е издание, стр. 394
Работа с файлами в локальной файловой системе является многоэтапным процессом. Прежде всего, необходимо получить объект, представляющий саму файловую систему. Сделать это можно с помощью синхронного прикладного интерфейса в фоновом потоке или асинхронного - в основном потоке выполнения:
<b>// Метод синхронного получения файловой системы. Принимает параметры,</b><b>// определяющие срок существования файловой системы и ее размер.</b><b>// Возвращает объект файловой системы или возбуждает исключение,</b><b>var fs = requestFileSystemSync(PERSISTENT, 1024*1024);</b><b>// Асинхронная версия принимает функции обратного вызова для обработки</b><b>// успешного или неудачного создания файловой системы</b><b>requestFileSystem(TEMPORARY, // срок существования</b><b> 50*1024*1024, // размер: 50 Мбайт</b><b> function(fs) { // будет вызвана с объектом файловой системы</b><b> // Здесь используется объект fs</b><b> },</b><b> function(e) { // будет вызвана с объектом ошибки</b><b> console.log(е); // Или как-то иначе обработать ошибку</b><b>});</b>В обеих версиях прикладного интерфейса, синхронной и асинхронной, указываются срок существования и желаемый размер файловой системы. Файловая система, срок существования которой определяется константой
<b>PERSISTENT</b><b>TEMPORARY</b>Доступность файловой системы определяется происхождением создавшего ее документа. Все документы или веб-приложения с общим происхождением (хост, порт и протокол) будут совместно использовать одну и ту же файловую систему. Два документа или приложения с разным происхождением будут пользоваться совершенно разными и никак не связанными между собой файловыми системами. Кроме того, файловая система веб-приложения отделена от остальных файлов на жестком диске пользователя: веб-приложения не имеют никакой возможности «вырваться» за пределы локального корневого каталога или как-то иначе получить доступ к произвольным файлам.
Обратите внимание, что в именах этих функций присутствует слово «request» (запросить). Когда приложение вызывает одну из этих функций в первый раз, броузер может запросить разрешение у пользователя, прежде чем создать файловую систему и разрешить доступ к ней. [59]
После получения доступа все последующие вызовы метода request будут просто возвращать объект, представляющий уже имеющуюся локальную файловую систему.
Объект файловой системы, полученный одним из методов, представленных выше, имеет свойство
<b>root</b><b>DirectoryEntry</b><b>DirectoryEntry</b><b>FileEntry</b><b>DirectoryEntry</b><b>DirectoryEntry</b><b>FileEntry</b><b>DirectoryEntry</b><b>createReader(),</b><b>DirectoryReader</b>Класс
<b>FileEntry</b><b>File</b><b>Blob</b><b>FileReader</b><b>FileEntry</b><b>FileWriter</b>Операции чтения и записи с использованием этого прикладного интерфейса представляют собой многоэтапный процесс. Прежде всего, необходимо получить объект файловой системы. Затем, используя свойство root этого объекта, необходимо отыскать (и при необходимости создать) объект
<b>FileEntry</b><b>FileEntry</b><b>FileWriter</b><b>// Читает текстовый файл "hello.txt" и выводит его содержимое. При использовании</b><b>// асинхронного прикладного интерфейса глубина вложенности функций достигает</b><b>// четырех уровней. Этот пример не включает определения функций обработки ошибок.</b><b>requestFileSystem(PERSISTENT, 10*1024*1024, function(fs) { // Получить объект ФС </b><b> fs.root.getFile("hello.txt”, {}, function(entry) { // Получить FileEntry</b><b> entry.file(function(file) { // Получить File</b><b> var reader = new FileReader();</b><b> reader.readAsText(file);</b>