我只需要删除目录(多个级别)中的json文件。我可能会猜测fs-unlinkSync(path)
是可能的但是,如果不指定单个文件名,我将找不到解决方案。
我希望通过以下解决方案... fs.unlinkSync('./ desktop / directory / *。json') 但不幸的是,星号不会全选。有什么建议吗?
答案 0 :(得分:4)
您可以使用fs.readdirSync列出文件,然后调用fs.unlinkSync进行删除。可以递归调用它来遍历整棵树。
const fs = require("fs");
const path = require("path");
function deleteRecursively(dir, pattern) {
let files = fs.readdirSync(dir).map(file => path.join(dir, file));
for(let file of files) {
const stat = fs.statSync(file);
if (stat.isDirectory()) {
deleteRecursively(file, pattern);
} else {
if (pattern.test(file)) {
console.log(`Deleting file: ${file}...`);
// Uncomment the next line once you're happy with the files being logged!
try {
//fs.unlinkSync(file);
} catch (err) {
console.error(`An error occurred deleting file ${file}: ${err.message}`);
}
}
}
}
}
deleteRecursively('./some_dir', /\.json$/);
我实际上已经删除了删除该文件的行,并将其注释掉了。.我建议您运行脚本,并对记录的文件是正确的感到高兴。然后,只需取消注释fs.unlinkSync行即可删除文件。