FS без повторений?

Как записать текст в файл без повторений?

fs.appendFile('d:\\a\\logs.txt', `[${today}] [${displaytime}] `+message.toString()+"\n", err => {
    if (err) {
        console.error(err)
        return
    }
})

Этот код добавляет в файл текст с повторениями, а мне надо без повторений. Как это сделать?


Ответы (1 шт):

Автор решения: vsemozhebuty

Мне в голову приходит два способа.

  1. С дополнительными затратами на память. Создайте структуру Set и заносите в неё все сообщения, которые выводите в файл. Перед выводом проверяйте наличие в ней идентичных сообщений и выводите, только если их там нет.

  2. С дополнительными затратами на чтение файла и парсинг. Перед выводом читайте содержимое файла, делите его на строки и проверяйте на наличие идентичных сообщений.

Первый способ может скушать много дополнительной памяти, если у вас большие объёмы данных. Второй способ будет отбирать время на чтение файла и разбор — а если файл большой, вместо постоянно занятого куска памяти вы будете занимать такой же кусок время от времени.

Возможно, кто-то подскажет более удачные решения.

→ Ссылка