//判断服务器上面有没有upload目录,如果没有创建这个目录,有就不做操作
let fs =require('fs');
let path = './upload';
fs.stat(path,(err,data)=>{
if(err){
//执行创建目录
mkdir(path);
return;
}
if(!data.isDirectory()){//如果是文件
fs.unlink(path,()=>{//删除方法
if(!err){
mkdir(path);
}else{
console.log('创建失败')
}
})
}
})
//创建目录的方法
function mkdir(dir){
fs.mkdir(dir,err=>{
console.log(err);
return;
});
}
/*cnpm i mkdirp --save
引入 let mkdir = require(‘nkdirp’);
*/
现在文档已经更新了,有新的方法mkdirp自行查看
let mkdirp = require('mkdirp');//效果跟上面的创建目录是一样的
mkdirp('./upload/abc/xxx');
2.wwwroot 文件夹下面有images css js 以及index.html ,找出wwwroot目录下面的所有目录,然后放到一个数组中
const fs = require('fs');
let dirArr = [];
let path = './wwwroot';
//错误的写法要注意fs里面的东西是异步
fs.readdir(path,(err,data)=>{
if(err){
console.log(err)
}
for(let i = 0;i<data.length;i++){
fs.stat(path+'/'+data[i],(err,stats)=>{
if(stats.isDirectory()){
dirArr.push(data[i]);
}
})
}
console.log(dirArr);
})
console.log(dirArr);
1.递归实现
const fs = require('fs');
let dirArr = [];
let path = './wwwroot';
(function getDir(i) {
if(i==data.length){//判断退出的条件
console.log(dirArr);
return;
}
fs.stat(path + '/' + data[i], (err, stats) => {
if (stats.isDirectory()) {
dirArr.push(data[i]);
}
getDir(i + 1);
})
})(0)//从0开始执行
})
2.nodejss 里面的新特新 async await
/* Promise 处理异步 resolve成功的回调函数 reject 失败的回调函数*/
let getData = (res,rej)=>{
setTimeout(()=>{
let name = 'zqw';
res(name);
},1000);
}
let p = new Promise(getData);
p.then((data)=>{
console.log(data);
})
const fs = require('fs');
//1.定义一个isDir 的方法判断一个资源到底是目录还是文件
async function isDir(path) {
return new Promise((res, rej) => {
fs.stat(path, (err, stats) => {
if (err) {
console.log(err);
rej(err);
return;
}
if (stats.isDirectory()) {
res(true);
} else {
res(false);
}
})
})
}
//2.获取wwwwroot里面的所有资源 循环遍历 function main() {
function main(){
let dirArr = [];
let path = './wwwroot';
fs.readdir(path,async (err, data) => {
if (err) {
console.log(err);
return;
}
for (let i = 0; i < data.length; i++) {
if(await isDir(path+'/'+data[i])){
dirArr.push(data[i]);
}
};
console.log(dirArr)
})
}
main()
fs中的流以及管道流 复制图片 复制文件
//以流的方式读取文件
const fs = require('fs');
let readstream = fs.createReadStream('./wwwroot/input.txt');
let count = 0;
let str = '';
readstream.on('data',(data)=>{
str+=data;
count++;
})
readstream.on('end',()=>{
console.log(str);
console.log(count)
});
let fs =require('fs');//以流的方式写入文件
var str = '';
for(var i=0;i<500;i++){
str+='xisdfff\n'
}
let writeStream = fs.createWriteStream('./wwwroot/input.txt')
writeStream.write(str);
writeStream.end();
writeStream.on('finish',()=>{
console.log('写入完成')
})
const fs =require('fs');
let readStream = fs.createReadStream('aaa.jpg')
let writeStream = fs.createWriteStream('./wwwroot/aaa.jpg');
readStream.pipe(writeStream);