В данном уроке мы разберемся с синхронной работой с файлами, так как она более простая для понимания.
Синхронное чтение файла
Для синхронного чтения файла используется
метод readFileSync
. Первым параметром
он принимает имя файла или путь к файлу,
а вторым - кодировку файла, как правило это
utf8
.
Пусть в папке с нашим скриптом располагается
файл readme.txt
. Давайте прочитаем
его текст и выведем на экран:
let text = fs.readFileSync('readme.txt', 'utf8');
console.log(text);
Сделайте два файла, текстом которых будут некоторые числа. Напишите скрипт, который прочитает числа из файлов и выведет в консоль сумму этих чисел.
Синхронная запись файла
Для синхронной записи в файл используется
функция writeFileSync
. Первым параметром
она принимает имя файла или путь к нему,
а вторым - текст, который мы хотим записать
в этот файл:
fs.writeFileSync('readme.txt', 'text');
Если файл уже существует, то его текст будет перезаписан. А если файл не существует - то он будет автоматически создан.
Дан объект:
let obj = {
'file1.txt': 'text1',
'file2.txt': 'text2',
'file3.txt': 'text3',
}
С помощью цикла для каждого элемента объекта создайте файл, именем которого будет свойство элемента, а текстом - значение свойства.
Дан файл с текстом. Запустите таймер, который
каждые 5
секунд в конец этого файла
будет записывать восклицательный знак.
Синхронные чтение и запись файла
Можно прочитывать данные из файла, совершать над ними какую-нибудь операцию, а затем записывать обратно.
Для примера давайте прочитаем текст из файла
readme.txt
, добавим ему в конец знак
!
и запишем измененный текст обратно
в файл:
let text = fs.readFileSync('readme.txt', 'utf8');
fs.writeFileSync('readme.txt', text + '!');
Дан файл, в тексте которого записано некоторое число. Напишите скрипт, который прочитает число из файла, прибавит к нему единицу и запишет новое число обратно в файл.
Даны 3
файла с числами. Напишите скрипт,
который прочитает числа из файлов, найдет
их сумму и запишет ее в новый файл.
Исключительные ситуации
При работе с файловой системой могут возникать различные исключительные ситуации. Например, файл может отсутствовать, может отказать жесткий диск, диск может быть переполнен, диск может сломаться и не отвечать, у вас может не быть прав для записи в определенную папку и так далее.
Поэтому любую работу с файловой системой
необходимо оборачивать в try-catch
:
try {
let text = fs.readFileSync('readme.txt', 'utf8');
console.log(text);
} catch (err) {
console.log('при чтении файла возникла ошибка', err);
}
Попробуйте прочитать несуществующий файл. Убедитесь, что при этом произойдет исключительная ситуация. Допишите ваш код так, чтобы он обрабатывал эту ситуацию.