版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012054869/article/details/82115960
6. 目录操作
(1)创建目录
- Fs.mkdir()
- Fs.mkdirSync()
例子:创建单层目录
const fs = require('fs');
// 创建目录
// 一,创建单层目录
fs.mkdir('./file',function (err) {
if(err) throw err;
console.log('目录创建成功');
})
例子二:创建多层目录
const fs = require('fs');
const path = require('path');
//创建多层目录,递归异步操作
const createDir = function (dirPath,callback) {
// 判断目录是否已经存在
fs.access(dirPath,function (err) {
if(err){
// 递归调用
// 先创建前面的部分,再通过 fs.mkdir()补齐后面的
// console.log(path.dirname('a/b/c/d/e'));//直接把最后一部分去掉了
createDir(path.dirname(dirPath),function () {
// 再创建最后一个
fs.mkdir(dirPath,callback);
});
}else {
callback(new Error(dirPath+'已经存在'));
}
})
}
createDir('a/b/c/d',function (err) {
if(err) throw err;
console.log('目录创建成功');
})
(2)读目录
- Fs.readdir()
- Fs.readdirSync()
例子:获取目录,并打开网址显示页面上
// 导入文件系统
const fs = require('fs');
const http = require('http');
// 获取目录,并打开网址显示页面上
//创建服务
http.createServer(function (req, res) {
res.writeHead(200, {'content-type': 'text/html;charset=utf-8'});
res.write('<ul>');
fs.readdir('./../../admin', function (err, files) {
//遍历
files.forEach(function (file) {
//查看目录状态
let state = fs.statSync('./../../admin'+file);
let type = state.isFile() ? "file" : "directory";
res.write('<li>' + file + type + '</li>')
});
res.write('</ul>');
})
}).listen(1314, function () {
console.log('create 1314 success');
})
(3)删除目录
- Fs.rmdir()
- Fs.rmdirSync()
例子一:只删除空目录
const fs = require('fs');
//删除,只能删除空目录
fs.rmdir('a/b/c/d',function (err) {
if(err) throw err;
console.log('目录删除成功')
})
例子二:删除目录或者文件,删除目录中所有文件
const fs = require('fs');
const path = require('path');
// 删除目录或者文件,删除目录中所有文件
const removeDir = function (dirPath, callback) {
// 判断类型
fs.stat(dirPath,function (err,state) {
if (err) return callback(err);
// 判断是否是目录
if(state.isDirectory()){
// 读取目录
fs.readdir(dirPath,function (err,files) {
if (err) return callback(err);
// 如果是空目录
if(files.length<1){
fs.rmdir(dirPath,callback);
return;
}
// 遍历
let count = 0;
files.forEach(function (file) {
removeDir(path.join(dirPath,file,function () {
if(++ count === files.length){
fs.rmdir(dirPath,callback);
}
}))
})
})
}else {
// 文件
fs.unlink(dirPath,callback);
}
})
}
removeDir('a',function (err) {
if(err) throw err;
console.log('目录删除成功');
})