До сих пор я предполагал, что если fs.appendFileSync
выдает исключение, то гарантируется, что содержимое целевого файла не изменилось ни на один бит.
Официальная документацияэтой функции не относится к этой проблеме (и к случаям сбоя в целом).
Исходный код этой функции показывает, что она вызывает fs.writeFileSync
, что вход делает это:
try {
while (length > 0) {
const written = fs.writeSync(fd, data, offset, length, position);
offset += written;
length -= written;
if (position !== null) {
position += written;
}
}
} finally {
if (!isUserFd) fs.closeSync(fd);
}
Можно ли из вышесказанного сделать вывод, что fs.appendFileSync
может вызвать исключение после частичного изменения целевого файла?
Если да, то есть ли какие-либо известные инструменты илипарадигмы для решения этой довольно трудной для понимания ситуации?
Большое спасибо!