nodejs

app.js
// 判断服务器上有没有upload目录,如果没有创建这个目录,如果有的话不做操作。
const fs=require('fs');
var path='./upload'
fs.stat(path,(err,data)=>{
  if(err){
    // 执行创建目录
    mkdir(path)
    return;
  }
  if(!data.isDirectory()){
    // 首先删除文件,再去执行创建目录
    fs.unlink(path,(err)=>{
      if(!err){
        mkdir(path)
      }else {
        console.log('请检查传入的数据是否正确')
      }
    })
  }
})

 

function mkdir(dir){
  fs.mkdir(dir,(err)=>{
    if(err){
      console.log(err)
      return;
    }
  })
}
 
或者用mkdirp这个模块
var mkdirp=require('mkdirp');
mkdirp('./upload/aaa/xxxx').then(made=>{
  console.log(`made directories, starting with ${made}`)
})
 ------------------------------------------------------
 
www文件夹下有images css js 以及index.html,找出wwwroot目录下的所有目录,然后组成一个数组返回
第一种方法用递归解决:
const fs=require('fs')
var path='./wwwroot'
var dirArr=[]
fs.readdir(path,(err,data)=>{
  if(err){
    console.log(err)
    return;
  }
  // console.log(data)
  (function getDir(i){
    if(i==data.length){ // 执行完成
      console.log(dirArr)
      return 
    }
    fs.stat(path+'/'+data[i],(error,stats)=>{
      if(stats.isDirectory()){
        dirArr.push(data[i])
      }
      getDir(i+1)
    })
  })(0)
})
 
第二种方法用async await解决:
// 1、定义一个isDir的方法判断一个资源到底是目录还是文件
// 2、获取wwwroot里面的所有资源,循环遍历
async function isDir(path){
      return new Promise((resolve,reject)=>{
        fs.stat(path,(error,stats)=>{
          if(error){
            console.log(error)
            reject(error)
            return;
          }
          if(stats.isDirectory()){
            resolve(true)
          }else {
            resolve(false)
          }
        })
      })
}

function main(){
  var path='./wwwroot'
  var dirArr=[]
  fs.readdir(path,async (err,data)=>{
    if(err){
      console.log(err);
      return;
    }
    for(var i=0;i<data.length;i++){
      if(await isDir(path+'/'+data[i])){
        dirArr.push(data[i])
      }
    }
    console.log(dirArr)
  })
}
main()
-----------------------------------------------------------
读取流:
const fs=require('fs')
var readStream=fs.createReadStream('./data/input.txt')
var count=0;
var str='';
readStream.on('data',(data)=>{
  str+=data;
  count++
})
readStream.on('end',(data)=>{
  console.log(str)
  console.log(count)
})

readStream.on('error',(err)=>{
  console.log(err)
})
-----------------------------------------------------------
写入流:
const fs=require('fs')
var str='';
for(var i=0;i<500;i++){
  str+='我是从数据库获取的数据,我要保存起来\n'
}
var writeStream=fs.createWriteStream('./data/output.txt')
writeStream.write(str)

// 标记写入完成,写上这句才能触发finish
writeStream.end();

writeStream.on('finish',()=>{
  console.log('写入完成')
})
-----------------------------------------------------------
管道流:
const fs=require('fs')
var readStream=fs.createReadStream('./1.png')
var writeStream=fs.createWriteStream('./data/a.jpg')
readStream.pipe(writeStream)
posted @ 2021-09-02 14:17  耿鑫  阅读(39)  评论(0编辑  收藏  举报