NodeJs FS 文件系统模块

1. fs.stat 检测是文件还是目录

 

fs.stat('html',function(err,stats){
 if(err){
   console.log(err);

   return false;
 }

 console.log('文件:'+stats.isFile());
 console.log('目录:'+stats.isDirectory());

})

 

2. fs.mkdir 创建目录

 

  //接收参数:
  //path            将创建的目录路径
  //mode          目录权限(读写权限),默认0777
  //callback      回调,传递异常参数err


fs.mkdir('css',function(err){
 if(err){
  console.log(err);

  return false;
 }
console.log('创建目录成功');

})

 

3. fs.writeFile 创建写入文件

 

//filename      (String)            文件名称
//data        (String | Buffer)    将要写入的内容,可以使字符串 或 buffer数据。
//options        (Object)           option数组对象,包含:
 //· encoding   (string)            可选值,默认 ‘utf8′,当data使buffer时,该值应该为 ignored。
 //· mode         (Number)        文件读写权限,默认值 438
 //· flag            (String)            默认值 ‘w'
//callback {Function}  回调,传递一个异常参数err。


fs.writeFile('t.txt','你好nodejs 覆盖','utf8',function(err){

  if(err){
   console.log(err);

   return false;
  }
 console.log('写入成功');
})

 

4. fs.appendFile 追加文件

 

fs.appendFile('t1.txt','这是写入的内容',function(err){

  if(err){
   console.log(err);

   return false;
  }
 console.log('写入成功');
})

 

5.fs.readFile 读取文件

fs.readFile('t1.txt',function(err,data){
  if(err){
   console.log(err);

   return false;
  }
  //console.log(data);

  console.log(data.toString());

})

 

6.fs.readdir 读取目录

fs.readdir('html',function(err,data){

   if(err){
    console.log(err);

    return false;
  }
  console.log(data);

})

 

 

7.fs.rename 重命名

fs.rename('html/index.html','html/news.html',function(err){

   if(err){
    console.log(err);

    return false;
  }
  console.log('修改名字成功');
})


fs.rename('html/css/basic.css','html/style.css',function(err){

    if(err){
     console.log(err);

     return false;
   }
   console.log('剪切成功');
})

 

8. fs.rmdir 删除目录

fs.rmdir('t',function(err){
     if(err){
      console.log(err);

      return false;
    }
   console.log('删除目录成功');
})

// ENOENT: no such file or directory, rmdir      rmdir 这个方法只能删除目录
fs.rmdir('index.txt',function(err){
     if(err){
      console.log(err);

      return false;
    }
   console.log('删除目录成功');
})

 

9. fs.unlink 删除文件

fs.unlink('index.txt',function(err){

       if(err){
          console.log(err);
          return false;
     }
    console.log('删除文件成功');
})

 

10. fs.createReadStream 从文件流中读取数据

const fs = require('fs')

//流的方式读取文件

var readStream=fs.createReadStream('input.txt');

var str='';/*保存数据*/
var count=0;  /*次数*/
readStream.on('data',function(chunk){
    str+=chunk;
    count++;

})

//读取完成
readStream.on('end',function(chunk){
    console.log(count);
    console.log(str);

})


//读取失败
readStream.on('error',function(err){
    console.log(err);

})

 

11. fs.createWriteStream 写入文件

var fs = require("fs");
var data = '我是从数据库获取的数据,我要保存起来11
';

// 创建一个可以写入的流,写入到文件 output.txt 中
var writerStream = fs.createWriteStream('output.txt');

for(var i=0;i<100;i++){


    writerStream.write(data,'utf8');

}

//标记写入完成
writerStream.end();


writerStream.on('finish',function(){

    console.log('写入完成');
})

//失败
writerStream.on('error',function(){

    console.log('写入失败');
})

 

12. 管道流

var fs = require("fs");


// 创建一个可读流
var readerStream = fs.createReadStream('input.txt');

// 创建一个可写流
var writerStream = fs.createWriteStream('output.txt');

// 管道读写操作
// 读取 input.txt 文件内容,并将内容写入到 output.txt 文件中
readerStream.pipe(writerStream);

console.log("程序执行完毕");

demo:

//1.判断服务器上面有没有upload目录。没有创建这个目录。   (图片上传)

//要用fs目录必须得引入fs

var fs=require('fs');
//
//fs.stat('upload',function(err,stats){
//
//        if(err){  /*没有这个目录*/
//            fs.mkdir('upload',function(error){
//                if(error){
//
//                    console.log(error);
//                    return false;
//                }
//                console.log('创建成功');
//            })
//        }else{
//            console.log('目录已经存在');
//            console.log(stats.isDirectory());
//        }
//
//})



//2. 找出html目录下面的所有的目录,然后打印出来

//错误写法
//fs.readdir('html',function(err,files){
//             if(err){
//                    console.log(error);
//
//             }else{  /*判断是目录还是文件夹*/
//                 console.log(files);  /*数组*/
//
//                 for(var i=0;i<files.length;i++){
//
//                     console.log(files[i]);
//                     fs.stat(files[i],function(error,stats){  /*循环判断是目录还是文件  ---异步 */
//
//                            console.log(files[i]);
//                     })
//                 }
//
//             }
//
//
//})
//

//打印出什么   3 3  3
//for(var i=0;i<3;i++){
//
//    setTimeout(function(){
//        console.log(i);
//    },100)
//}




//正确的写法

var filesArr=[];
fs.readdir('html',function(err,files){
             if(err){
                    console.log(error);

             }else{  /*判断是目录还是文件夹*/
                 //console.log(files);  /*数组*/

                 (function getFile(i){

                     if(i==files.length){  /*循环结束*/
                         console.log('目录:');
                         console.log(filesArr);   /*打印出所有的目录*/
                         return false;
                     }
                     //files[i]  =   css  js   news.html
                     //注意:目录
                     fs.stat('html/'+files[i],function(error,stats){  /*循环判断是目录还是文件 */

                         if(stats.isDirectory()){ /*目录*/

                             filesArr.push (files[i]);  /*保存数据*/
                         }
                         //递归掉用
                         getFile(i+1);
                     })
                 })(0)
             }
})
原文地址:https://www.cnblogs.com/loaderman/p/11494221.html