nodejs:fs (内置模块)读取和写入文件

目标

  1. 能够实现文件读写操作

提示:以下是本篇文章正文内容,下面案例可供参考

一、常用内置模块

1.1、fs文件读取

        对于文件和目录操作,nodejs中有一个原则: 错误优先

 引入内置模块,fs,path,os

代码如下(示例):

const fs = require('fs')
const path = require('path')
const os = require('os')

得到当前文件的绝对路径 

代码如下(示例):

let filepath = path.join(__dirname, './data/1.txt')
let filepath = path.resolve('./data/1.txt')

读取文件中的内容 

        默认在没有指定读取后的文件编码时,它返回的是一个buffer字符流(理解为2进制) 

        对于err 参数,如果读取文件有错时,则为错误对象,如果没有错,则为null

代码如下(示例):

fs.readFile(filepath, (err, buffer) => {
  if(err){
    console.log('文件读取失败');
  }else{
    console.log(buffer.toString()); //默认字符集编码是utf-8
  }

         加上第二个参数,表示字符集编码格式

代码如下(示例):

fs.readFile(filepath, 'utf-8', (err, data) => {
  if (err) {
    console.log('文件读取失败');
  } else {
    console.log(data);
  }
})

        用promise方法(2种形式)

代码如下(示例):

var readFile = (filepath) => {
  return new Promise((resolve, reject) => {
    fs.readFile(filepath, 'utf-8', (err, data) => {
      if (err) {
        reject('文件读取失败@');
      } else {
        resolve(data);
      }
    })
  })
}
let filepath = path.resolve('./data/1.txt');
; (async function () {
  try {
    let data = await readFile(filepath)
    console.log(data);
  } catch (error) {
    console.log('异常')
  }
})();

        封装函数

代码如下(示例):

function readFile(filepath){
    return new Promise((resolve,reject) => {
        fs.readFile(filepath,'utf-8',(err,data) => {
            if(err){
                reject('文件异常');
            }else{
                resolve(data);
            }
        })
    })
}

        同步读取文件,通过自定义异常处理。

代码如下(示例):

let filepath = path.resolve('./data/1.txt')
try {
  let data = fs.readFileSync(filepath, 'utf-8')
  console.log(data);
} catch (error) {
  console.log('没有找到');
}

 1.2、fs文件写入

        得到当前写入的目录,目录一定要真实,否则会失败

 引入内置模块,fs,path,os

代码如下(示例):

const fs = require('fs');
const { resolve} = require('path')
const os = require('os');

获得绝对路径

let filepath = resolve('./data/2.txt');

        同步操作

fs.writeFileSync(filepath,`我要操作啦${os.EOL}写入完成`);
console.log('写入操作完成')

 

         异步操作

let str = 'fanfan是憨憨'
fs.writeFile(filepath,str,err => {
    //写入失败为对象,写入成功为null
    console.log(err)
})

 

         查看当前目录下的文件

let dirpath = resolve('./data');
fs.readdir(dirpath,'utf-8',(err,data) => {
    console.log(data)
})

        判断当前路径查询的数据是文件还是文件夹 ,返回布尔值,如果是文件夹,返回true,如果是文件,返回false。

let stat = fs.statSync(resolve('./data/package'));
console.log(stat.isDirectory())

         查看文件的相关属性

fs.stat(filepath, (err, stat) => {
  // 文档属性对象
  console.log(stat);
  // 获取当前文件的最后修改时间(在写web服务器时作为浏览器缓存设置的标识)
  console.log(stat.mtime);
  // 判断是否为文件
  console.log(stat.isFile());
  // 判断是否为目录
  console.log(stat.isDirectory());
  // 文件大小  kb
  console.log(Number((stat.size / 1024).toFixed(2)));
})


总结

        以上就是今天要分享的内容,本文仅仅简单介绍了fs的文件读取和写入,每天学习多一点新知识,多敲一行代码,就是进步。

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值