node的fs模块

简介: node的fs模块

node的fs模块

一、简述

fs模块是 Node.js官方提供的,用来操作文件的模块(读取/写入)。它提供了一些属性和方法,用来满足用户对文件的操作。

二、读取指定文件的内容

fs.readFile(path, [options], callback),

  • 参数一:必选参数,字符串,表示文件的路径
  • 参数二:可选参数,表示以什么编码格式来读取文件
  • 必须参数,文件读取完成后,通过回调函数拿到读取的数据

三、向指定的文件写入内容

fs.writeFile(file, data, [options], callback)

  • 参数一:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径
  • 参数二:必选参数,表示要写入的内容
  • 参数三:可选参数,表示要以什么编码格式写入文件内容,默认值是utf8(可以省略不写)
  • 参数四:必选参数,文件写入完成后的回调函数

如果在js代码中,使用fs模块操作文件,则需要先使用require导入

const fs = require('fs');

四、使用

使用 fs.readFile() 方法读取文件

// 1、导入fs模块,来操作文件
const fs = require('fs');

// 1、调用fs.readFile()方法读取文件
//    参数一:读取文件的存放路径
//    参数二:读取文件时采用的编码格式,一般默认指定 utf8
//    参数三:回调函数,拿到读取成功和失败的结果,err,dataStr
fs.readFile('./files/files.txt', 'utf8', (err, dataStr) => {
   
    // 如果读取成功,则 err 的值为 null
    // 如果读取失败,则 err 的值为错误对象,dataStr的值为undefind

    if (err) {
   
        // 例如readFile路径错误就会进来
        console.log(`读取文件失败${
     err.message}`);
    }

    console.log(`读取文件成功${
     dataStr}`);
})

// 运行,终端输入node,空格,接着输入要执行文件名称的前两个字符。使用Tab键补全,回车,就可以了

使用 fs.createFile() 方法写入文件

// 导入fs模块
const fs = require('fs');

// 调用fs.writeFile()方法写入内容
// 参数一:存放写入内容的文件,没有的话就在该路径下创建
// 参数二:要写入的内容
// 参数三:编码格式(可以省略不写,默认utf8)
// 参数四:回调函数

const writeContent = '我是通过fs.writeFiles()函数写入的内容。'
fs.writeFile('./files/writeFile.txt', writeContent, 'utf8', (err, res) => {
   
    // 如果文件写入成功,则err的值为null
    // 如果文件写入失败,则err的值是一个错误对象
    if (err) {
   
        console.log(`写入文件成功${
     err.message}`);
    }
    console.log(`写入内容成功${
     res}`);
})

案例-成绩整理

/**
 * 需求
 * 将num里的数据,= 换成 :,并且换行
 * 将新数据存放到新建文件夹newNum里
 */
 const fs = require('fs');
 fs.readFile(__dirname + '/files/num.txt', 'utf8', (err, res) => {
   
     if (err) {
   
         console.log(`读取失败${
     err.message}`);
     }
     const arr = res.split(' ');
     let newArray = [];
     arr.forEach(item => {
   
         newArray.push(item.replace('=', ':'))
     })
     const dataStr = newArray.join('\n');
     // console.log(`读取并整理文件${dataStr}`);
     addFile(dataStr)
 });

 const addFile = (str) => {
   
     fs.writeFile(_dirname + '/files/newNum.txt',str, (err, res) => {
   
         if (err) {
   
             console.log(`新文件创建失败${
     err}`);
         }
         console.log(`新文件创建成功${
     res}`);
     });
 };

路径问题解决
使用 __dirname来动态设置当前文件所在目录

const fs = require('fs');
// 终端使用cd进入其他文件,再node执行该文件,就会报错
// 因为cd进去表示当前文件所处目录,然后拼接上'./files/files.txt'相对路径,导致位置错误
// 出现路径拼接错误的问题,是因为提供了 ./ 或 ../ 开头的相对路径
// 如果要解决这个问题,可以直接提供一个完整的文件存放路径就行
// 最好的解决方案是提供一个动态的当前文件所处目录的变量

// fs.readFile('./files/files.txt', 'utf8', (err, res) => {
   
//     console.log(err);
//     console.log(res);
// })

// __dirname 表示当前文件所处目录
fs.readFile(__dirname + '/files/files.txt', 'utf8', (err, res) => {
   
    console.log(err);
    console.log(res);
})
目录
相关文章
|
9天前
|
JavaScript 前端开发
Vue、ElementUI配合Node、multiparty模块实现图片上传并反显_小demo
如何使用Vue和Element UI配合Node.js及multiparty模块实现图片上传并反显的功能,包括前端的Element UI组件配置和后端的Node.js服务端代码实现。
14 1
Vue、ElementUI配合Node、multiparty模块实现图片上传并反显_小demo
|
2月前
|
存储 缓存 JSON
Node.js有哪些模块系统
【8月更文挑战第12天】Node.js有哪些模块系统
35 3
|
2月前
[译] Node 模块中的 peer dependencies 是什么?
[译] Node 模块中的 peer dependencies 是什么?
|
3月前
|
存储 JavaScript 安全
Node中的AsyncLocalStorage 使用问题之AsyncLocalStorage与node:async_hooks模块的问题如何解决
Node中的AsyncLocalStorage 使用问题之AsyncLocalStorage与node:async_hooks模块的问题如何解决
|
2月前
|
存储 JavaScript 前端开发
nodejs os模块
nodejs os模块
29 0
|
3月前
|
存储 JavaScript 前端开发
Node中的AsyncLocalStorage 使用问题之async_wrap 模块是如何与 libuv 交互的
Node中的AsyncLocalStorage 使用问题之async_wrap 模块是如何与 libuv 交互的
|
3月前
|
监控 JavaScript 前端开发
Node中的AsyncLocalStorage 使用问题之Node.js内部模块和外部模块的加载的问题如何解决
Node中的AsyncLocalStorage 使用问题之Node.js内部模块和外部模块的加载的问题如何解决
|
3月前
|
资源调度 前端开发 开发工具
阿里云云效操作报错合集之Node-Sass模块在构建过程中,出现报错"ENOENT: no such file or directory, scandir ",该如何处理
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
3月前
|
JavaScript
【Node.js基础02】fs、path模块
【7月更文挑战第17天】
18 0
|
3月前
|
JSON JavaScript 前端开发
死磕Node模块兼容性,ESM和CJS我全都要!
死磕Node模块兼容性,ESM和CJS我全都要!
204 0
下一篇
无影云桌面