php中文网 | cnphp.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 704|回复: 0

nodeJS-fs模块的基本使用

[复制链接]

3138

主题

3148

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

UID
1
威望
0
积分
7946
贡献
0
注册时间
2021-4-14
最后登录
2024-11-21
在线时间
763 小时
QQ
发表于 2022-2-5 21:45:56 | 显示全部楼层 |阅读模式
fs模块(系统内置模块 主要用来操作文件)
注意: 基本上所有方法都有异步和同步,基本上同步的方法 都是在异步方法后面加上 Sync

常见的文件的基本操作:
前提: 要先引入fs模块
      var fs = require('fs');

01) 读取文件(内容)

    a) 异步读取
        fs.readFile('要读取的文件的路径', function (err, data) {
            // 判断 如果有错 打印错误
            if (err) {
                console.log('读取错误!')
            }
            // 否则 打印读取到的数据
            console.log(data);
        })

    b) 同步读取
        // 直接读取 返回读取的结果 保存在data变量里面
        var data = fs.readFileSync('被读取的文件的路径');

// 引入fs模块
  var fs = require('fs');

  // 异步读取
  /*
      fs.readFile('./readme.txt', function (err, data) {
            // 判断 如果有错 抛出错误
          if (err) {
              throw err;
          }
          // 如果没有错 打印读取到的文件数据
          console.log('读取结果:', data.toString());
      })
  */

  // console.log('看一下阻塞不?')

  // 同步读取 (直接返回读取的结果 保存在变量data里面)
  var data = fs.readFileSync('./readme.txt');
  console.log('读取结果:', data.toString());
  console.log('看一下阻塞不?')

02)异步读取文件信息

  // 引入fs模块
  var fs = require('fs');


  /*
      // 异步读取文件信息
      fs.stat('./', function (err, stats) {
        // 如果有错 抛出错误
          if (err) {
              throw err;
          }
          // 否则 打印读取的文件信息
          // console.log(stats);
          console.log('文件的大小:', stats.size);
          console.log('是否是文件:', stats.isFile());
          console.log('是否是目录(文件夹):', stats.isDirectory());
      })

  */

  // 同步读取 直接返回读取结果 保存在data里面
  var data = fs.statSync('./readme.txt');
  console.log(data);

03-fs写文件
    // 引入fs模块
    var fs = require('fs');

    // 往writeme.txt文件 写入一些内容
    fs.writeFile('./writeme.txt', '我是写入的内容', function (err) {
        // 判断 如果有错 抛出错误 否则 打印写入成功
        if (err) {
            throw err;
        }
        console.log('写入文件成功!')
    })
04-先读取再写入
// 先引入fs模块
var fs = require('fs');

// 先读取文件
fs.readFile('./readme.txt', function (err, data) {
    // 判断 如果有错 抛出错误 否则 把读取的结果保存在一个变量里面
    if (err) {
        throw err;
    }
    // 定义一个变量 保存读取结果
    var readRst = data;

    // 把读取的结果 写入writeme.txt文件里面
    fs.writeFile('./writeme.txt', readRst, function (err) {
        // 如果有错 抛出错误
        if (err) {
            throw err;
        }
        console.log('写入成功!')
    })
})

05-删除文件
// 引入fs模块
var fs = require('fs');

// 删除文件
fs.unlink('./writeme.txt', function (err) {
    // 判断 如果有错 抛出错误 否则 打印删除成功
    if (err) {
        throw err;
    }

    console.log('删除成功!')

})

06-读取文件目录中的所有文件
// 引入fs模块
var fs = require('fs');

// 读取文件目录(文件夹)中的所有文件
fs.readdir('../', function (err, files) {
    // 如果有错 抛出错误
    if (err) {
        throw err;
    }
    // 否则 打印读取的结果 (读取当前目录的结果 会被放入一个数组里面)
    console.log(files);
})

07-创建文件夹&删除空文件夹
// 引入fs模块
var fs = require('fs');
/*
    // 创建文件夹
    fs.mkdir('./cc', function (err) {
        // 如果有错 抛出错误
        if (err) {
            throw err;
        }
        // 否则 打印创建文件夹成功
        console.log('创建文件夹成功')
    })
*/
// 删除空的文件夹
fs.rmdir('./cc', function (err) {
    if (err) {
        throw err;
    } else {
        console.log('删除空文件夹成功')
    }
})

08-递归删除非空文件夹
// 引入fs模块
var fs = require('fs');


// 封装成一个 可以删除非空目录的函数(传入要删除的目录即可)
function delDir (dir) {
    // 获取传入的目录下所有的文件 结果是一个数组
    var filesArr = fs.readdirSync(dir);
    // 循环遍历这个数组 ['bb', 'cc', 'text.txt']
    for (var i in filesArr) {
        // 拼接读取文件信息的路径
        var path = dir + '/' +filesArr[i] // ./aa/bb  ./aa/cc ./aa/text.txt

        // 读取文件的信息
        var stat = fs.statSync(path);
        // 判断 如果是文件 直接删除
        if (stat.isFile()) {
            fs.unlinkSync(path)  // 直接删除
        } else if (stat.isDirectory()) {
            // 递归调用自己
            delDir(path)  
        }
    }
    // 删除空目录(文件夹)
    fs.rmdirSync(dir)
}

// 想如何调用?
// delDir('D:\\day02');

// 暴露出去
// module.exports = delDir;





上一篇:公网IP、私网IP、动态IP、静态IP
下一篇:Nginx 安装详解-整理的非常详细
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|php中文网 | cnphp.com ( 赣ICP备2021002321号-2 )

GMT+8, 2024-11-22 04:57 , Processed in 0.288837 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

申明:本站所有资源皆搜集自网络,相关版权归版权持有人所有,如有侵权,请电邮(fiorkn@foxmail.com)告之,本站会尽快删除。

快速回复 返回顶部 返回列表