you*_*not 58 javascript node.js
如何在不使用Node.js删除目录的情况下从目录中删除所有文件?
我想删除临时文件.我对文件系统没有任何好处.
我找到了这个方法,它将删除文件和目录.在那,类似的东西/path/to/directory/*将无法奏效.
我真的不知道应该使用什么命令.谢谢您的帮助.
Wat*_*oll 111
要从目录中删除所有文件,首先需要列出目录中的所有文件fs.readdir,然后您可以使用fs.unlink删除每个文件.同样fs.readdir只给出文件名,需要与目录名连接才能获得完整路径.
这是一个例子
const fs = require('fs');
const path = require('path');
const directory = 'test';
fs.readdir(directory, (err, files) => {
if (err) throw err;
for (const file of files) {
fs.unlink(path.join(directory, file), err => {
if (err) throw err;
});
}
});
Run Code Online (Sandbox Code Playgroud)
Jef*_*D23 53
It can also be done with a synchronous one-liner without dependencies:
const { readdirSync, rmSync } = require('fs');
const dir = './dir/path';
readdirSync(dir).forEach(f => rmSync(`${dir}/${f}`));
Run Code Online (Sandbox Code Playgroud)
Nic*_*net 21
有一个名为rimraf的包非常方便.它是节点的UNIX命令rm -rf.
然而,它也可能过于强大,因为您可以使用它轻松删除文件夹.以下命令将删除文件夹中的文件.如果删除*,则将删除日志文件夹.
const rimraf = require('rimraf');
rimraf('./log/*', function () { console.log('done'); });
Run Code Online (Sandbox Code Playgroud)
https://www.npmjs.com/package/rimraf
Sam*_*lam 16
是的,有一个模块fs-extra。.emptyDir()这个模块中有一个方法可以完成这项工作。这是一个例子:
const fsExtra = require('fs-extra')
fsExtra.emptyDirSync(fileDir)
Run Code Online (Sandbox Code Playgroud)
该模块也有一个异步版本。任何人都可以签出链接。
Jas*_*Kim 10
基于@ Waterscroll的响应,如果要在节点8+中使用async和await:
const fs = require('fs');
const util = require('util');
const readdir = util.promisify(fs.readdir);
const unlink = util.promisify(fs.unlink);
const directory = 'test';
async function toRun() {
try {
const files = await readdir(directory);
const unlinkPromises = files.map(filename => unlink(`${directory}/${filename}`));
return Promise.all(unlinkPromises);
} catch(err) {
console.log(err);
}
}
toRun();
Run Code Online (Sandbox Code Playgroud)
简单的 Node 10 解决方案
import fs from 'fs/promises'
await fs.readdir('folder').then((f) => Promise.all(f.map(e => fs.unlink(e))))
Run Code Online (Sandbox Code Playgroud)
还有另一种选择:
import {mkdir, rm} from 'fs/promises';
async function clearDirectory(dirPath) {
await rm(dirPath, {recursive: true});
await mkdir(dirPath);
}
Run Code Online (Sandbox Code Playgroud)
这实际上是完全删除该目录(使用rm),但随后立即重新创建它,因此看起来它只是被清空了。这将影响文件夹元数据和可能的所有权,因此它不适用于所有用例。
| 归档时间: |
|
| 查看次数: |
54358 次 |
| 最近记录: |