Создайте файл, если он еще не существует
Я хотел бы создать файл foobar
. Однако, если у пользователя уже есть файл с именем foobar
тогда я не хочу переписывать их. Поэтому я только хочу создать foobar
если он еще не существует.
сначала я подумал, что должен это сделать:
fs.exists(filename, function(exists) {
if(exists) {
// Create file
}
else {
console.log("Refusing to overwrite existing", filename);
}
});
однако, глядя на официальная документация на fs.exists
, он читает:
fs.существует() является анахронизмом и существует только по историческим причинам. Не должно почти никогда не будет поводом использовать его в своем собственном коде.
в частности, проверка наличия файла перед его открытием анти-шаблон, который оставляет вас уязвимыми для условий гонки: другой процесс может удалить файл между вызовами fs.существует() и файловая система.открытый.)( Просто откройте файл и обработайте ошибку, когда это не так там.
fs.существует() является устаревшим.
очевидно, что разработчики узлов считают мой метод плохой идеей. Кроме Того, Я не хотите использовать функцию, которая будет удалена.
как я могу создать файл без записи поверх существующего?
3 ответов
Я думаю, ответ:
просто откройте файл и обработать ошибку, когда ее там нет.
попробуйте что-то вроде:
function createFile(filename) {
fs.open(filename,'r',function(err, fd){
if (err) {
fs.writeFile(filename, '', function(err) {
if(err) {
console.log(err);
}
console.log("The file was saved!");
});
} else {
console.log("The file exists!");
}
});
}
Если вы хотите записать данные в этот файл позже, вы можете использовать fs.appendFile('message.txt', 'data to append', 'utf8', callback);
.
асинхронно добавлять данные в файл,создать файл, если он еще не существует. Данные могут быть строкой или буфером.