21

Запись в файлы в Node.js

11

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

5 ответ(ов)

3

Вы можете, конечно, сделать это немного более продвинутым. Например, реализовать неблокирующее записывание, то есть записывать кусками, а не записывать весь файл сразу. Вот пример:

var fs = require('fs');
var stream = fs.createWriteStream("my_file.txt");

stream.once('open', function(fd) {
  stream.write("Моя первая строка\n");
  stream.write("Моя вторая строка\n");
  stream.end();
});

В этом коде используется поток для записи в файл my_file.txt, что позволяет добавлять строки по мере необходимости, не блокируя выполнение программы. Это особенно полезно при работе с большими объемами данных.

0

В вашем коде используется устаревший способ создания буфера и работы с файловой системой в Node.js. Рекомендуется использовать Buffer.from() вместо new Buffer(), так как последний метод считается устаревшим и небезопасным. Также стоит использовать fs.promises для лучшей обработки промисов и асинхронного кода.

Вот обновленный вариант вашего кода:

const fs = require('fs').promises;

const path = 'public/uploads/file.txt';
const buffer = Buffer.from("some content\n");

(async () => {
    try {
        const fd = await fs.open(path, 'w');
        await fs.write(fd, buffer, 0, buffer.length, null);
        await fd.close();
        console.log('file written');
    } catch (err) {
        console.error('Error:', err);
    }
})();

В этом примере используется async/await для более чистого и читаемого кода. Мы также обрабатываем ошибки с помощью try/catch, что делает код более устойчивым к исключениям.

0

Вопрос касается операции "записи", но в более общем смысле операция "добавления" может быть полезной в некоторых случаях, поскольку она легко используется в цикле для добавления текста в файл (независимо от того, существует ли файл или нет). Если вы хотите добавлять строки, используйте символ "\n", например:

const fs = require('fs');
for (var i = 0; i < 10; i++) {
    fs.appendFileSync("junk.csv", "Line:" + i + "\n");
}

Этот код добавляет строки в файл junk.csv, создавая новый файл, если он не существует.

0

Это довольно просто, так как в Node есть встроенная функциональность для работы с файлами, она называется fs, что расшифровывается как File System. В общем, модуль файловой системы NodeJS...

Сначала подключите его в вашем файле server.js следующим образом:

var fs = require('fs');

У fs есть несколько методов для записи в файл, но мой предпочтительный способ — использовать appendFile, который добавляет данные в файл, а если файл не существует, создаёт его. Код может выглядеть так:

fs.appendFile('myFile.txt', 'Привет, Али!', function (err) {
  if (err) throw err;
  console.log('Спасибо, данные сохранены в файл!');
});

Таким образом, вы сможете легко добавлять текст в файл (или создавать его, если он отсутствует) с помощью модуля fs.

0

Вы можете записывать в файлы с помощью потоков.

Просто сделайте это следующим образом:

const fs = require('fs');

const stream = fs.createWriteStream('./test.txt');
stream.write("Пример текста");

Не забудьте закрыть поток после завершения записи:

stream.end();
Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь