Node学习-核心模块之fs文件模块的使用

NodeJS学习笔记
  ~ fs 文件模块:
    常用方法有:
      1、fs.stat            |     检测是文件还是目录
      2、fs.mkdir         |     创建目录
      3、fs.writeFile     |     创建写入文件
      4、fs.appendFile   |     追加文件
      5、fs.readFile     |     读取文件
      6、fs.readdir       |     读取目录
      7、fs.rename         |     重命名/移动文件
      8、fs.rmdir          |     删除目录
      9、fs.unlink         |     删除文件
 
  ①.使用nodejs引入fs文件模块
    
1 const fs = require('fs');

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

    其中有两个常用方法 
      -- isFile()       判断是否为文件 返回值为:Boolean
      -- isDirectory()      判断是否为目录 返回值为:Boolean

    使用方法:

1 fs.stat('./html', (err, data) => {
2     if (err) throw err;
3     console.log(`是文件:${data.isFile()}`);
4     console.log(`是目录:${data.isDirectory()}`);
5 })

    文件层级关系(*)


      │ app.js                            ----->               入口文件
      │ package.json

      └─html                            ----->           手动创建后执行           fs.stat


    执行命令:node app.js(下文所有执行结果之前执行命令全部相同)

    执行结果:是文件:false

         是目录:true


  2.fs.mkdir  创建目录:(此目录若是存在则返回err,若不存在则新建目录) 

          params:1.path:将创建的目录路径
               2.mode 目录权限
               3.callback 回调函数,传递异常参数err

    使用方法:

1     fs.mkdir('./css', (err) => {
2         if (err) throw err;
3         console.log('创建成功');
4     })

    文件层级关系(*)


      │ app.js                            ----->               入口文件
      │ package.json
      ├─css                             ----->             执行后           fs.mkdir

      └─html


  3.fs.writeFile 创建或写入文件:(此文件若是存在则替换新传入内容,若不存在则新建文件并写入内容) 

             params:1.filename   将创建或写入的文件名称
                       2.data       写入的内容
                       3.options    数组对象(可不写)
                             .encoding   设置文件编码(默认utf-8)
                             .mode       设置文件权限(默认438)
                             .flag       默认值‘w(覆盖)’
                       4.callback   回调函数,传递异常参数err

    使用方法:

1     fs.writeFile('./html/index.html','你好! nodejs',(err)=>{
2         if (err) throw err;
3         console.log('创建写入文件成功!')
4     })

    文件层级关系(*)


      │ app.js                            ----->               入口文件
      │ package.json
      ├─css

      └─html

        └─ index.html                             ----->             执行           fs.writeFile


  4.fs.appendFile  追加文件:(此文件若是存在则追加新传入内容(相当于+=),若不存在则新建文件并写入内容) 

         params:1.filename   将创建或写入的文件名称
                      2.data       写入的内容
                      3.options    数组对象(可不写)
                            .encoding   设置文件编码(默认utf-8)
                            .mode        设置文件权限(默认438)
                            .flag           默认值‘a(追加)’
                      4.callback   回调函数,传递异常参数err

    使用方法:

1     fs.appendFile('./css/base.css','h2{color:blue}',(err)=>{
2         if (err) throw err;
3         console.log('写入并追加文件成功!')
4     })

    文件层级关系(*)


      │ app.js                            ----->               入口文件
      │ package.json
      ├─css
      │   base.css                            ----->             执行           fs.appendFile

      └─html

        └─ index.html 


  5.fs.readFile 读取文件(默认返回为Buffer类型内容)

         params:1.filename   读取文件路径
                      2.options    数组对象(可不写)
                            .encoding   设置文件编码(默认Buffer 可设置为utf-8)
                      3.callback   回调函数,传递异常参数err和data数据

    使用方法:

1     fs.readFile('./html/index.html','utf-8', (err, data) => {
2         if (err) throw err;
3         console.log(data)      
4         console.log(data.toString()) // 当传入options参数为空时,可以使用toString方法把Buffer转换成string类型
5     });

    执行结果:为html目录下index.html文件内容。


  6.fs.readdir  读取目录:返回当前(./html)目录下面一级子目录和文件

    使用方法:

 1     fs.readdir('./html', (err, data) => { // 返回当前(./html)目录下面一级子目录和文件
 2         if (err) throw err;
 3         console.log(data); //[ 'index.html', 'news_file.html' ]
 4         // |./html
 5         // |    |./js
 6         //          |index.js
 7         // |    |index.html
 8         // |    |news_file.html
 9         // console.log(data); // [ 'index.html', 'js', 'news_file.html' ]
10     })

 


  7.fs.rename  重命名/移动文件

        params:1.oldPath:老路径

             2.newPath:新路径

             3.callback:回调函数

    使用方法:

 1     // |./css
 2     // |    |base.css
 3     // |    |aaa.css
 4 
 5     // 1.重命名
 6     fs.rename('./css/aaa.css', './css/index.css', (err) => {
 7         if (err) throw err;
 8         console.log('重命名成功')
 9     // |./css
10     // |    |base.css
11     // |    |index.css
12     })
13 
14     // 2.移动文件
15     fs.rename('./css/index.css', './html/index.css', (err) => {
16         if (err) throw err;
17         console.log('移动文件成功')
18     // |./html
19     // |    |index.css
20     // |    |index.html
21     // |    |...
22     })

    文件层级关系(*)


      │ app.js                            ----->               入口文件
      │ package.json
      ├─css
      │   base.css 
      │   aaa.css(手动创建)  --rename(重命名)-->  index.css    ①:重命名执行                        fs.rename        

      └─html                      

        │ index.html                    
        └ index.css                            ----->             执行           ②:移动文件                        fs.rename           
        


  8.fs.rmdir 删除目录

    使用方法:

1     fs.rmdir('./aaaa',(err)=>{ // 目录下方有 _文件 或者 _目录 则无法删除
2     if(err) throw err;
3     console.log('删除目录成功')
4     })

    文件层级关系(*)


      │ app.js                            ----->               入口文件

      │ package.json
      │
      ├─aaaa                            手动创建
      │    index.html                            手动创建  

        


     执行结果:

      [Error: ENOTEMPTY: directory not empty, rmdir 'D:Nodejsday_02_02aaaa'] {
      errno: -4051,
      code: 'ENOTEMPTY',
      syscall: 'rmdir',
      path: 'D:\Nodejs\day_02_02\aaaa'
      }


  9.fs.unlink 删除文件

    使用方法:

1     fs.unlink('./aaaa/index.html',(err)=>{ // 有则删,无则报错
2         if(err) throw err;
3         console.log('删除文件成功')
4     })

    文件层级关系(*)


      │ app.js                            ----->               入口文件

      │ package.json
      │
      ├─aaaa                            手动创建
      │    index.html                            手动创建  

        


     执行结果:删除文件成功

    (此时再去删除aaaa目录则可以删除成功)

原文地址:https://www.cnblogs.com/chenghuayike/p/14154730.html