c语言sscanf函数的用法是什么
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~