Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

Пример 22.11 демонстрирует, как использовать метод

readAsText
для чтения локальных текстовых файлов, выбранных пользователем.

Пример 22.11. Чтение текстовых файлов с помощью объекта

FileReader

<script>

// Читает указанный текстовый файл и отображает его в элементе <рге> ниже

function readfile(f) {

var reader = new FileReader; // Создать объект FileReader

reader.readAsText(f); // Прочитать файл

reader.onload = function { // Определить обработчик события

var text = reader.result; 11 Это содержимое файла

var out = document.getElementById("output"); // Найти элемент output

out.innerHTML = // Очистить его

out.appendChild(document.createTextNode(text));// Вывести содержимое

} // файла

reader.onerror = function(e) { // Если что-то пошло не так

console.log("Error", .e); // Вывести сообщение об ошибке

};

}

</script>

// Выберите файл для отображения:

<input type="file" onchange=”readfile(this. files[0])"x/input>

<pre id="output"x/pre>

Метод

readAsArrayBuffer
похож на метод
readAsText,
за исключением того, что требует приложить чуть больше усилий при работе с результатом, возвращая объект
ArrayBuffег
вместо строки. Пример 22.12 демонстрирует использование метода
readAsArrayBuffer
для чтения первых четырех байтов из файла в виде целого числа с прямым порядком следования байтов.

Пример 22.12. Чтение первых четырех байтов из файла

<script>

// Исследует первые 4 байта в указанном двоичном объекте. Если это "сигнатура",

// определяющая тип файла, асинхронно устанавливает свойство двоичного объекта.

function typefile(file) {

var slice = file.slice(0,4); // Читать только первые 4 байта

var reader = new FileReader; // Создать асинхронный FileReader

reader.readAsArrayBuffer(slice); // Прочитать фрагмент файла

reader.onload = function(e) {

var buffer = reader.result; // Результат - ArrayBuffer

var view = new DataView(buffer); // Получить доступ к результату

var magic = view.getUint32(0, false); // 4 байта, прямой порядок

switch(magic) { // Определить по ним тип файла

case 0х89504Е47: file.verified_type = "image/png"; break;

case 0x47494638: file.verified_type = "image/gif"; break;

case 0x25504446: file.verified_type = "application/pdf"; break;

case 0x504b0304: file.verified_type = "application/zip"; break;

}

console.log(file.name, file.verified_type);

};

}

</script>

<input type="file" onchange="typefile(this. files[0])”></input>

В фоновых потоках выполнения вместо объекта

FileReader
можно использовать объект
FileReaderSync
. Синхронный прикладной интерфейс определяет те же методы
readAsText
и
readAsArrayBuffer,
которые принимают те же аргументы, что и их асинхронные версии. Разница заключается лишь в том, что синхронные методы блокируются до окончания операции и непосредственно возвращают результат в вид строки или объекта
ArrayBuffer
, что избавляет от необходимости использовать обработчики событий. Пример 22.14 ниже демонстрирует использование объекта
FileReaderSync
.

22.7. Прикладной интерфейс к файловой системе

В разделе 22.6.5 вы познакомились с классом

FileReader
, использовавшимся для чтения содержимого файлов, выбираемых пользователем, или любых двоичных объектов. Типы
File
и
Blob
определяются проектом спецификации, известной как «File АРІ». Проект другой спецификации, еще более новой, чем «File АРІ», дает веб-приложениям управляемый доступ к частной файловой системе, где они могут писать в файлы, читать файлы, создавать каталоги, читать содержимое каталогов и т. д. На момент написания этих строк данный прикладной интерфейс к файловой системе был реализован только в броузере Google Chrome. Это мощная и важная форма локального хранилища, поэтому она будет описана здесь, несмотря на то что ее прикладной интерфейс еще менее стабилен, чем другие прикладные интерфейсы, описываемые в этой главе. Данный раздел охватывает лишь основные задачи, выполняемые с файловой системой, и не демонстрирует всех возможностей прикладного интерфейса. Так как обсуждаемый здесь прикладной интерфейс является новым и нестабильным, он не описывается в справочном разделе этой книги.

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

// Метод синхронного получения файловой системы. Принимает параметры,

// определяющие срок существования файловой системы и ее размер.

Поделиться:
Популярные книги

Вперед в прошлое 7

Ратманов Денис
7. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 7

Вперед в прошлое 3

Ратманов Денис
3. Вперёд в прошлое
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Вперед в прошлое 3

Эволюционер из трущоб. Том 5

Панарин Антон
5. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 5

Сын счастья

Вассму Хербьёрг
2. Книга Дины
Проза:
современная проза
5.00
рейтинг книги
Сын счастья

Эволюционер из трущоб. Том 2

Панарин Антон
2. Эволюционер из трущоб
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Эволюционер из трущоб. Том 2

Проданная Истинная. Месть по-драконьи

Белова Екатерина
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Проданная Истинная. Месть по-драконьи

Неучтенный элемент. Том 3

NikL
3. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 3

Кодекс Крови. Книга VIII

Борзых М.
8. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга VIII

Газлайтер. Том 38

Володин Григорий Григорьевич
38. История Телепата
Фантастика:
городское фэнтези
аниме
попаданцы
5.00
рейтинг книги
Газлайтер. Том 38

Искатель 1

Шиленко Сергей
1. Валинор
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Искатель 1

Лекарь Империи

Карелин Сергей Витальевич
1. Лекарь Империи
Фантастика:
городское фэнтези
аниме
дорама
фэнтези
попаданцы
5.00
рейтинг книги
Лекарь Империи

Несгибаемый граф. Тетралогия

Яманов Александр
Нет пророка в своем отечестве
Фантастика:
альтернативная история
фэнтези
5.00
рейтинг книги
Несгибаемый граф. Тетралогия

Некромант на страже человечества. Том 5

Клеванский Никита
5. Некромант на страже человечества
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Некромант на страже человечества. Том 5

Кодекс Охотника. Книга XXXV

Винокуров Юрий
35. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXV