Работа с файлами¶
Для работы с файлами в Node.js предназначен модуль fs
. Рассмотрим, как с ним работать.
Чтение из файла¶
Допустим, в одной папке с файлом приложения app.js
расположен текстовый файл hello.txt
с простейшим текстом, например:
1 |
|
Для чтения файла в синхронном варианте применяется функция fs.readFileSync()
:
1 |
|
В метод передается путь к файлу относительно файла приложения app.js
, а в качестве второго параметра указывается кодировка для получения текстового содержимого файла. На выходе получаем считанный текст.
Для асинхронного чтения файла применяется функция fs.readFile
:
1 |
|
Первый и второй параметр функции опять же соответственно путь к файлу и кодировка. А в качестве третьего параметра передается функция обратного вызова, которая выполняется после завершения чтения. Первый параметр этой функции хранит информацию об ошибке при наличии, а второй - собственно считанные данные.
Для чтения файла определим в файле app.js
следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
И здесь стоит обратить внимание, что несмотря на то, что функция fs.readFile()
вызывается первой, но так как она асинхронная, она не блокирует поток выполнения, поэтому ее результат выводится в самом конце.
Запись файла¶
Для записи файла в синхронном варианте используется функция fs.writeFileSync()
, которая в качестве параметра принимает путь к файлу и записываемые данные:
1 |
|
Также для записи файла можно использовать асинхронную функцию fs.writeFile()
, которая принимает те же параметры:
1 |
|
В качестве вспомогательного параметра в функцию может передаваться функция обратного вызова, которая выполняется после завершения записи:
1 2 3 4 5 6 7 8 9 10 |
|
Следует отметить, что эти методы полностью перезаписывают файл. Если надо дозаписать файл, то применяются методы fs.appendFile()
/fs.appendFileSync()
:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
Удаление файла¶
Для удаления файла в синхронном варианте используется функция fs.unlinkSync()
, которая в качестве параметра принимает путь к удаляемому файлу:
1 |
|
Также для удаления файла можно использовать асинхронную функцию fs.unlink()
, которая принимает путь к файлу и функцию, вызываемую при завершении удаления:
1 2 3 4 5 |
|