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

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

Жанры

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. Это мощная и важная форма локального хранилища, поэтому она будет описана здесь, несмотря на то что ее прикладной интерфейс еще менее стабилен, чем другие прикладные интерфейсы, описываемые в этой главе. Данный раздел охватывает лишь основные задачи, выполняемые с файловой системой, и не демонстрирует всех возможностей прикладного интерфейса. Так как обсуждаемый здесь прикладной интерфейс является новым и нестабильным, он не описывается в справочном разделе этой книги.

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

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

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

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

Я не бог. Книга XXXIV

Дрейк Сириус
34. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я не бог. Книга XXXIV

Играть... в тебя

Зайцева Мария
3. Звериные повадки Симоновых
Любовные романы:
современные любовные романы
5.40
рейтинг книги
Играть... в тебя

Астровитянка

Горькавый Ник
1. Астровитянка
Фантастика:
научная фантастика
9.17
рейтинг книги
Астровитянка

Ричард Львиное Сердце: Поющий король

Сегень Александр Юрьевич
Проза:
историческая проза
5.00
рейтинг книги
Ричард Львиное Сердце: Поющий король

Петр и Алексей (Христос и Антихрист - 3)

Мережковский Дмитрий Сергеевич
Проза:
русская классическая проза
5.00
рейтинг книги
Петр и Алексей (Христос и Антихрист - 3)

Большой шеф Красной капеллы: Впервые в мире беседы с Леопольдом Треппером

Томин Валентин Романович
Герои тайной войны
Приключения:
исторические приключения
5.00
рейтинг книги
Большой шеф Красной капеллы: Впервые в мире беседы с Леопольдом Треппером

Офицер

Земляной Андрей Борисович
1. Офицер
Фантастика:
боевая фантастика
7.21
рейтинг книги
Офицер

Я все еще не царь. Книга XXVI

Дрейк Сириус
26. Дорогой барон!
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Я все еще не царь. Книга XXVI

Мисс совершенство

Робертс Нора
3. Инн-Бунсборо
Любовные романы:
современные любовные романы
9.33
рейтинг книги
Мисс совершенство

Джей

Kriu
Фантастика:
фэнтези
5.00
рейтинг книги
Джей

3ds Max 2008

Верстак Владимир
Видеосамоучитель
Компьютеры и Интернет:
программное обеспечение
5.00
рейтинг книги
3ds Max 2008

Князь Андер Арес 3

Грехов Тимофей
3. Андер Арес
Фантастика:
рпг
аниме
фэнтези
5.40
рейтинг книги
Князь Андер Арес 3

Гуманитарное знание и вызовы времени

Коллектив авторов
Humanitas
Научно-образовательная:
культурология
5.00
рейтинг книги
Гуманитарное знание и вызовы времени

Рекламная деятельность газет и журналов

Назайкин Александр
Деловая литература:
маркетинг, pr, реклама
5.00
рейтинг книги
Рекламная деятельность газет и журналов