天天看點

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)=>{

    console.log(err)

  // 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)=>{

      console.log(err);

    for(var i=0;i<data.length;i++){

      if(await isDir(path+'/'+data[i])){

    console.log(dirArr)

main()

-----------------------------------------------------------

讀取流:

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)

寫入流:

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('寫入完成')

管道流:

var readStream=fs.createReadStream('./1.png')

var writeStream=fs.createWriteStream('./data/a.jpg')

readStream.pipe(writeStream)

上一篇: nodejs
下一篇: NodeJs