node.js 学习—— fs 读取与写入

1、fs 文件系统模块

fs 模块是 Node.js 官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求,该模块的所有方法都有同步和异步两种方式。
JavaScript 的是没有操作文件的能力,但是 Node 是可以做到的,Node 提供了操作文件系统模块,是 Node 中使用非常重要和高频的模块,是绝对要掌握的一个模块系统。

导入:

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

1).读取

1. 异步读取 readFile

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

path :读取文件地址
option :参数 (可选)
callback :回调函数

fs.readFile('./files/01.txt', 'utf8', function (codeInfo, dataStr) {
	console.log(codeInfo);
    console.log(dataStr);
})

callback 返回两个参数,第一个参数是codeInfo:失败信息,第二个是dataStr: 读取到的数据

读取成功:第一个参数 null,第二个参数是读取数据

读取失败:第一个参数为 失败信息对象,第二个 返回 undefined


2. 同步读取 readFileSync

fs.readFileSync( path ,[, option] ) 没有 callback 回调方法

path :读取文件地址
option :参数 (可选)

let a = fs.readFileSync('./files/01.txt', 'utf8')
console.log(a);// 读取的数据内容

3. 流式读取 createReadStream

每次差不多最多读取 64kb 内容

fs.createReadStream( path )

path :读取文件地址

fs.createReadStream( path ) // 与文件建立链接

xx.on(‘data’, res=>{}) // 绑定事件,获取读取数据 res 就是读取数据

let a = fs.createReadStream('./files/cs75plus.mp4');// 和文件建立链接
a.on('data', res => {
    console.log(res.length); // 65536 ,每次差不多读取 64kb 内容大小
})
// 读取完成
a.on('end', () => {
    console.log('读取完成');
})


2). 写入

1. 异步写入 writeFile

fs.writeFile( path , con [, option] ,callback )

path :写入地址
con :写入内容
option :参数 (可选)
callback :回调函数

fs.writeFile('./files/02.txt', '我是写入的内容', function (errInfo) {
    console.log(errInfo);
})

errInfo:写入成功返回 null,写入失败 返回失败信息对象


2. 同步写入 writeFileSync

fs.writeFileSync( path , con [, option]) 没有 callback 回调函数

path :写入地址
con :写入内容
option :参数 (可选)

fs.writeFileSync('./files/02_test.txt', '同步写入的内容!')

3. 追加写入 appendFile

fs.appendFile( path , con [, option], callback )

path :写入地址
con :写入内容
option :参数 (可选)
callback :回调函数

fs.appendFile("./files/02.txt", ',追加内容', (err) => {
    console.log(err);
})

writeFile 和 writeFileSync 也可以追加写入

option 参数,写成 { flag:‘a’ }:也可表示追加内容

fs.writeFile('./files/02.txt', '追加内容', { flag: 'a' }, function (res) {})

4. 流式写入 createWriteStream

fs.createWriteStream( path )

path :写入地址,没有回自动创建

步骤:
fs.createWriteStream( path ); // 和 文件创建链接通道
xx.write( con ) // 写入
xx.close(); // 和 文件断开链接 (可写可不写,代码执行完成,会自动断开)

const ws = fs.createWriteStream('./files/02_流式写入.txt');// 建立链接
ws.write('1\n')//写入
ws.write('2\n')//写入
ws.write('3\n')//写入
ws.close();// 断开链接,可不写


3). 路径 问题 解决方案

因为你路径如果是相对路径 ./或…/ 时,路径容器出错;node 执行是在当前所处目录执行。不能每个 代码位置都 在根目录吧,所以需要解决 路径问题:

1、第一种:绝对路径 (不利于维护)

fs.readFile('C:\\Users\\LYY\\Desktop\\node.js\\files\\03.练习,成绩.txt')

2、第二种:__dirname 变量:表示 当前文件所处目录路径

fs.readFile( __dirname +'/files/03.练习,成绩.txt');// 不管你在哪个目录运行这个js,__dirname 都会指向 这个js文件的目录

第三种:path

const path = require('path');// 导入
let url = path.join(__dirname,'/files/03.练习,成绩.txt');// 也借用了__dirname,拼接两个路径 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值