Я хотел бы создать файл foobar
. Однако, если у пользователя уже есть файл с именем foobar
, я не хочу перезаписывать их. Поэтому я хочу создать foobar
, если он еще не существует.Создайте файл, если он еще не существует
Сначала я думал, что я должен сделать это:
fs.exists(filename, function(exists) {
if(exists) {
// Create file
}
else {
console.log("Refusing to overwrite existing", filename);
}
});
Однако, глядя на official documentation для fs.exists
, гласит:
fs.exists() является анахронизмом и существует только по историческим причинам. В своем коде не должно быть причин использовать его.
В частности, проверка, существует ли файл перед открытием это анти-модель, которая оставляет вас уязвимыми для расы условия: другой процесс может удалить файл между вызовами к fs.exists() и fs.open(). Просто откройте файл и обработайте ошибку, если там нет .
fs.exists() будет устаревшим.
Очевидно, разработчики узлов считают, что мой метод - плохая идея. Кроме того, я не хочу использовать функцию, которая будет устаревать.
Как создать файл без записи существующего?
он сообщает вам: откройте файл и обработайте ошибку (или ее отсутствие) – dandavis