Еще один блог :)

Вопросы по NodeJS - Часть 5

  1. Назовите флаги, используемые для файловых операций чтения записи
  2. Что такое файловые потоки
  3. Какие типы потоков имеются
  4. Как открыть файл
  5. Как прочитать большой файл
  6. Как писать в файл
  7. Как закрыть файл
  8. Как получить информацию о файле
  9. Как усечь файл
  10. Как удалить файл

Основные флаги

r - открыть на  чтение, исключение возникает, если файла нет

r+ открыть для чтения и записи, исключение, если файла нет

rs - открыть для чтения в синхронном режиме. Приказывает операционной системе пропустить доступ к файлу через системный кеш. Это полезно в основном при открытии файлов с примонтированной NFS поскольку позволяет избежать чтения из устаревшего системного кеша. Эта функция имеет очень серьезное влияние на производительность, поэтому стараются не использовать этот флаг без крайней необходимости. Также надо иметь ввиду, что флаг не переводит fs.open в синхронный блокирующий вызов. Если нужно это, следует использовать вызов fs.openSync

w - открыть файл для записи, файл создается, если он не существует или его содержимое затирается, если он существует

wx - то же, что w, но падает, если путь к файлу существует

w+ - открывает для чтения и записи. Файл создается, если не существует или его содержимое затирает, если существует

a - открывает файл для добавления и чтения. Файл создается, если не существует

ax - тоже, что a, но упадет, есть путь к файлу не существует

a+ - открывает для добавления и чтения. Файл создается, если не существует

ax - то же, что a+, и падает, если путь не существует

42. Потоки - это специальные объекты, к-е позволяют считывать данные из источника и писать их в приемник и реализуются как непрерывный процесс

43. Существует несколько типов потоков - считывающие, пищущие, считывающе-пищущение (дуплексные)

Потоки дуплексного типа производят преобразование информации по мере поступления из источника

Потоки являются потомками класса EventEmitter. Время от времени потоки порождают события. Наиболее часто используются следующие события -

а) событие, возникающее когда данные доступны для чтения

б) события, когда нечего читать

в) событие, когда происходит ошика

г) событие, когда данные усечены

44. Чтобы открыть файл, надо исп-ть метод fs.open()

fs.open(path, flags, mode, callback)

path - путь+имя

flags - права

mode - режим (по умолчанию 0666) 

callback - ф-я обр. вызова с 2 аргументами (ошибка err и данные data)

45. Как прочитать большой файл

Используют буферизованное чтение, можно указывать смещение

fs.read( fd, buffer, offset, length, position, cb)

fd - дескриптор файла

buffer - буфер, куда пишутся данные

offset - смещение в буфере, с которого начинается запись

position - смещение, откуда надо считывать данные из файла

если смещение равно 0, данные считываются из текущей позиции файла

cb - ф-я обр. вызова  с тремя параметрами - err ошибка, bytesRead - количество считанных байтов, buffer - буфер

 46. Как писать в файл

fs.writeFile(filename, data, options, callback)

Метод перезапишет файл, если он существует. Если надо писать в существующий файл, исп-те другой метод.

path - путь + имя

data - строка или буфер, подлежащая записи

options - объект, назначающий кодировку, права доступа и флаг. По умолчанию, кодировка utf8, флаг w, права 0666

47 Чтобы закрыть файл, следует использовать fs.close(fd, cb)

fd - дескриптор, возвращенный fs.open()

cb - фун-я обр. вызова без параметров, кроме возможного исключения при записи

48 Чтобы получить информацию о файле, следует исп-ть метод fs.stat()

fs.stat(path, cb)

path - путь + имя

cb - ф-я обр. вызова с 2 аргументами err - ошибка и stats - объект класс fs.Stats

49 Как усечь файл

fs.ftruncate( fd, len, cb)

fd - дескриптор от fs.open

len - длина, после которой файл будет усечен

cb - функция о.в. которая не имеет параметров, кроме возможного исключения

50 Чтобы удалить файл, исп-ют функцию fs.unlink()

fs.unlink( path, cb )

path - путь + имя

cb - фун-ция обр. вызова без аргументов, кроме возм. исключения

 

 

 

 

 

 

Опубликовано в категории Вопросы по NodeJS

×