Синхронное чтение и запись файлов в NodeJS


В данном уроке мы разберемся с синхронной работой с файлами, так как она более простая для понимания.

Синхронное чтение файла
Для синхронного чтения файла используется метод readFileSync. Первым параметром он принимает имя файла или путь к файлу, а вторым - кодировку файла, как правило это utf8.

Пусть в папке с нашим скриптом располагается файл readme.txt. Давайте прочитаем его текст и выведем на экран:

let text = fs.readFileSync('readme.txt', 'utf8');
console.log(text);

Синхронная запись файла
Для синхронной записи в файл используется функция writeFileSync. Первым параметром она принимает имя файла или путь к нему, а вторым - текст, который мы хотим записать в этот файл:

fs.writeFileSync('readme.txt', 'text');
Если файл уже существует, то его текст будет перезаписан. А если файл не существует - то он будет автоматически создан.

Синхронные чтение и запись файла
Можно прочитывать данные из файла, совершать над ними какую-нибудь операцию, а затем записывать обратно.

Для примера давайте прочитаем текст из файла readme.txt, добавим ему в конец знак ! и запишем измененный текст обратно в файл:

let text = fs.readFileSync('readme.txt', 'utf8');
fs.writeFileSync('readme.txt', text + '!');

Исключительные ситуации
При работе с файловой системой могут возникать различные исключительные ситуации. Например, файл может отсутствовать, может отказать жесткий диск, диск может быть переполнен, диск может сломаться и не отвечать, у вас может не быть прав для записи в определенную папку и так далее.

Поэтому любую работу с файловой системой необходимо оборачивать в try-catch:

try {
let text = fs.readFileSync('readme.txt', 'utf8');
console.log(text);
} catch (err) {
console.log('при чтении файла возникла ошибка', err);
}