NodeJS①(fs文件系统模块)

网友投稿 264 2022-09-16

NodeJS①(fs文件系统模块)

文章目录

​​fs文件系统模块​​​​什么是fs文件系统模块?​​​​读取指定文件中的内容​​

​​fs.readFile() 的语法格式​​​​判断文件是否读取成功​​

​​向指定的文件中写入内容​​

​​fs.writeFile() 的语法格式​​​​判断文件是否写入成功​​

​​fs 模块 - 路径动态拼接的问题​​

​​解决方法一​​​​解决办法二​​

fs文件系统模块

什么是fs文件系统模块?

fs 模块是 Node.js 官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。 例如:

fs.readFile() 方法,用来读取指定文件中的内容fs.writeFile() 方法,用来向指定的文件中写入内容

如果要在 JavaScript 代码中,使用 fs 模块来操作文件,则需要使用如下的方式先导入它:

const fs = require('fs');

读取指定文件中的内容

fs.readFile() 的语法格式

使用 fs.readFile() 方法,可以读取指定文件中的内容,语法格式如下:

参数解读:

参数1:必选参数,字符串,表示文件的路径。参数2:可选参数,表示以什么编码格式来读取文件。参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果。

例如:

// 1. 导入 fs 模块,来操作文件const fs = require('fs')// 2. 调用 fs.readFile() 方法读取文件// 参数1:读取文件的存放路径// 参数2:读取文件时候采用的编码格式,一般默认指定 utf8// 参数3:回调函数,拿到读取失败和成功的结果 err dataStrfs.readFile('./files/11.txt', 'utf8', function(err,) { // 2.1 打印失败的结果 // 如果读取成功,则 err 的值为 null // 如果读取失败,则 err 的值为 错误对象,dataStr 的值为 undefined console.log(err) console.log('-------') // 2.2 打印成功的结果 console.log(dataStr)})

结果:

[Error: ENOENT: no such file or directory, open '11.txt'] { errno: -4058, code: 'ENOENT', syscall: 'open', path: 'files\\11.txt'}-------undefined

注意:这个回调函数有两个形参:err:返回的是一个错误的对象dataStr:返回的是一个成功的对象如果读取成功,则 err 的值为 null 如果读取失败,则 err 的值为 错误对象,dataStr 的值为 undefined

判断文件是否读取成功

const fs = require('fs')fs.readFile('./files/11.txt', 'utf8', function(err,) { if (err) { return console.log('读取文件失败!' + err.message) } console.log('读取文件成功!' + dataStr)})

向指定的文件中写入内容

fs.writeFile() 的语法格式

使用 fs.writeFile() 方法,可以向指定的文件中写入内容,语法格式如下:

参数解读:

参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径。参数2:必选参数,表示要写入的内容。参数3:可选参数,表示以什么格式写入文件内容,默认值是 utf8。参数4:必选参数,文件写入完成后的回调函数。

注意:

fs.writeFile() 方法只能用来创建文件,不能用来创建路径重复调用 fs.writeFile() 写入同一个文件,新写入的内容会覆盖之前的旧内容

例如:

// 1. 导入 fs 文件系统模块const fs = require('fs')// 2. 调用 fs.writeFile() 方法,写入文件的内容// 参数1:表示文件的存放路径// 参数2:表示要写入的内容// 参数3:回调函数fs.writeFile('./files/3.txt', 'ok123', function(err) { // 2.1 如果文件写入成功,则 err 的值等于 null // 2.2 如果文件写入失败,则 err 的值等于一个 错误对象 console.log(err)})

回调函数中会有一个形参err: 如果文件写入成功,则 err 的值等于 null 如果文件写入失败,则 err 的值等于一个 错误对象

判断文件是否写入成功

// 1. 导入 fs 文件系统模块const fs = require('fs')// 2. 调用 fs.writeFile() 方法,写入文件的内容// 参数1:表示文件的存放路径// 参数2:表示要写入的内容// 参数3:回调函数fs.writeFile('./files/3.txt', 'ok123', function(err) { // 2.1 如果文件写入成功,则 err 的值等于 null // 2.2 如果文件写入失败,则 err 的值等于一个 错误对象 // console.log(err) if (err) { return console.log('文件写入失败!' + err.message) } console.log('文件写入成功!')})

fs 模块 - 路径动态拼接的问题

在使用 fs 模块操作文件时,如果提供的操作路径是以 ./ 或 …/ 开头的相对路径时,很容易出现路径动态拼接错误的问题。

原因:代码在运行的时候,会以执行 node 命令时所处的目录,动态拼接出被操作文件的完整路径。也就是说如果你处于当前文件所在的目录并使用node命令,此时是不会出现动态的拼接错误的,但如果不在你当前的文件所在目录,在拼接的时候路径肯定会有缺失。

解决方法一

解决方案:在使用 fs 模块操作文件时,直接提供完整的路径,不要提供 ./ 或 …/ 开头的相对路径,从而防止路径动态拼接的问题。

缺点: 移植性非常差、不利于维护

例如:

const fs = require('fs')// 出现路径拼接错误的问题,是因为提供了 ./ 或 ../ 开头的相对路径// 如果要解决这个问题,可以直接提供一个完整的文件存放路径就行/* fs.readFile('./files/1.txt', 'utf8', function(err, dataStr) { if (err) { return console.log('读取文件失败!' + err.message) } console.log('读取文件成功!' + dataStr)}) *///解决办法fs.readFile('C:\\Users\\escook\\Desktop\\code\\files\\1.txt', 'utf8', function(err,) { if (err) { return console.log('读取文件失败!' + err.message) } console.log('读取文件成功!' + dataStr)})

注意:在字符串中的路径,一旦出现了\就要在后面再补一个\,因为\是转义符的意思,而\才表示 如果字符串中的路径出现的是/,则不用管

解决办法二

使用__dirname来表示路径 __dirname 表示当前文件所处的目录

fs.readFile(__dirname + '/files/1.txt', 'utf8', function(err,) { if (err) { return console.log('读取文件失败!' + err.message) } console.log('读取文件成功!' + dataStr)})

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Maven初识
下一篇:数英DIGITALING:女性营销怎么做?雅诗兰黛用口红大片破题!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~