Node.js читает файл как строку (не буфер) синхронно - PullRequest
0 голосов
/ 07 декабря 2018

Как мне прочитать файл в Node.js как строку, а не как буфер?Я делаю программу в Node.js.Там мне нужно прочитать файл синхронно, но если я это сделаю, он возвращает его в виде буфера вместо строки.Мой код выглядит так:

const fs = require('fs');

let content = fs.readFileSync('./foo.txt');
console.log(content) // actually logs it as a buffer

Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 08 декабря 2018

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

Флаг по умолчанию для этого метода:«r», открывающий файл для чтения.Если вы открываете его для чтения и записи, вы должны передать другой флаг - «r +».

Ваш код будет выглядеть так, если вы открываете файл для чтения и записи, а не просто для чтения:

const content = fs.readFileSync('./foo.txt/', 'utf-8', 'r+');
console.log(content);

Поскольку это node.js, вам следует рассмотреть возможность использования функции async fs.readFile.Вы должны будете пройти этот обратный вызов, конечно.

0 голосов
/ 07 декабря 2018

fs.readFileSync принимает второй параметр, который позволяет указать объект JSON с параметрами, включая кодировку возвращаемых данных.Если вы не укажете один, он возвращает Buffer по умолчанию.Таким образом, вы добавили бы кодировку в этот пример, чтобы вернуть его в виде строки.

Давайте добавим опцию кодирования в этот пример, где мы устанавливаем переменную content.Мы установим стандартную кодировку UTF-8.

let content = fs.readFileSync('./foo.txt', {encoding: 'utf8'});

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

let content = fs.readFileSync('./foo.txt', 'utf8');

Теперь, когда мы регистрируем content, мы должны иметь String в качестве результата, который мы используем.

Официальная документация: https://nodejs.org/api/fs.html#fs_fs_readfilesync_path_options

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...