nodejs的内置模块

fs文件系统模块


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

例如:

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

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

const fs=require('fs')


文件的读取 fs.readFile()

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


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

// 导入fs 模块
const fs=require('fs')
// 调用fs.readFile()方法读取文件
fs.readFile('./files/1.txt','utf8',function(err,dataStr){
    // 打印失败的结果
    // 如果读取成功,则err的值为null;如果读取失败,则err的值为错误对象,dataStr的值为undefined
    console.log(err)
    console.log('-------')
    // 打印成功的结果
    console.log(dataStr)
})
 

判断文件是否读取成功

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

文件的写入 fs.writeFile()

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

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

// 导入fs文件系统模块
const fs=require('fs')
// 调用fs.writeFile()方法,写入文件的内容
fs.writeFile('./files/2.txt','abcd',function(err){
    // 如果文件写入成功,则err的值等于null
    // 如果文件写入失败,则err的值等于一个错误对象
    console.log(err)
})

 注意:

fs.writeFile()方法只能用来创建文件,不用用来创建路径

重复调用fs.writeFile()写入同一个文件,新写入的内容会覆盖之前的旧内容

练习

// 导入fs模块
const fs = require('fs');
 
// 读取文件
// 参数一:读取的文件路劲(先建立一个txt文件,这个文件里需要有内容)
// 参数二:读取完成的回调函数
fs.readFile('./33.txt', (err, data) => {
 
    // 如果读取成功 !表示对err取反
    if (!err) {
        // 读取成功,data有值
        // toString()方法,把十六进制文本转化为字符串
        console.log('读取成功', data.toString());
    } else {
        console.log('读取失败!!!!!!!!');
    }
})
// 写入文件
// 参数一:写入的文件路劲
// 参数二:写入的内容(字符串)
// 参数三:完成的回调函数
fs.writeFile('./44.txt', '战神大战恶熊!!!', err => {
    if (err) {
        console.log('写入失败!!!!',err);
    } else {
        console.log('写入成功!!!!');
    }
})
//如果写入时有这个文件,则是覆盖原本文件的内容。
//如果写入时没有这个文件,则帮助我们新建个文件并写入内容。

战神大战恶熊

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

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

原因:代码在运行的时候,会以执行node命令时所出的目录,动态拼接出被操作文件的完整路径。

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

文件的追加 fs.appendFile() 


正常的写入,是一个覆盖的效果,如果想要追加内容,可以使用fs.appendFile()

const fs = require('fs');
console.log('start');
//在appendFile()的三个分别是 文件的路径,添加内容,callback
fs.appendFile('./test.txt','this is a test',function(err){
    if(err) throw err;
    console.log('is writing!');
})
console.log('end');
/*执行结果分别为:
start
end
is writing!
*/


文件的复制 fs.copyFile()


如果目标地址文件已存在,会覆盖目标文件

const fs = require('fs');
//                源文件      目标文件
fs.copyFile('./test.txt','./test5.txt',(err)=>{
    if(err) throw err
})
获取文件信息
通过 fs 模块的 stat 方法可以拿到一个文件的具体信息

const fs = require('fs');
fs.stat('./test.txt',(err, status)=>{
    if(err) throw err;
    console.log(status);
});
// Stats {
//     dev: 16777222,
//     mode: 33188,
//     nlink: 1,
//     uid: 501,
//     gid: 20,
//     rdev: 0,
//     blksize: 4096,
//     ino: 12908241066,
//     size: 17,
//     blocks: 8,
//     atimeMs: 1600244238410.9111,
//     mtimeMs: 1600242358742.662,
//     ctimeMs: 1600244237825.9692,
//     birthtimeMs: 1600237795491.121,
//     atime: 2020-09-16T08:17:18.411Z,
//     mtime: 2020-09-16T07:45:58.743Z,
//     ctime: 2020-09-16T08:17:17.826Z,
//     birthtime: 2020-09-16T06:29:55.491Z }

删除文件 fs.unlink()


const fs = require('fs');
fs.unlink('./test.txt',(err)=>{
    if(err) throw err;
    console.log('delete OK!');
})
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值