Удалить все файлы формата js в директории на node.js
Необходимо удалить все файлы формата js в директории на node.js. Получилось следующее:
var fileMatch = require('file-match');
var filter = fileMatch('*.js');
// built-in modules for the application
const fs = require("fs").promises;
const fsConstants = require("fs").constants;
const path = require("path");
const fileFormat = '__dirname, lr_1.js'
// folder name
const folderName = "testdir";
// folder location
const filePath = path.join(__dirname, folderName, "*.js");
// application script
fs.unlink(path.join(__dirname, folderName), path.extname(fileFormat)), (err) => {
if (err) console.log(err); // если возникла ошибка
else console.log("*.js was deleted");
};
Получаю ошибку:
[Error: EPERM: operation not permitted, unlink 'D:\home files\institute\РВП\testdir'] {
errno: ←[33m-4048←[39m,
code: ←[32m'EPERM'←[39m,
syscall: ←[32m'unlink'←[39m,
path: ←[32m'D:\\home files\\institute\\РВП\\testdir'←[39m
}
Понимаю, что, скорее всего, требуется реализация через цикл forEach, но пока не получилось сообразить, как это сделать
Ответы (1 шт):
Автор решения: ksa
→ Ссылка
Я удалил файлы в каталоге таким образом...
const {readdir, stat, unlink} = require("fs").promises;
const path = require("path");
let folder = "test";
folder = path.join(__dirname, folder);
readdir(folder)
.then(a => {
const s = a.map((f, i) => {
a[i] = path.join(folder, f)
return stat(a[i])
})
return Promise.all([a, Promise.all(s)])
})
.then(([a, s]) => {
a = a.filter((f, i) => {
if (!s[i].isFile()) return false
return /\.js$/.test(f)
})
a = a.map(f => unlink(f))
return Promise.all(a)
})
.then(a => {
console.log('В каталоге', folder)
console.log('Удалено файлов %sшт.', a.length)
})
.catch(console.log)