node fs 读取指定文件夹下特一格式文件后,写入另一文件

  1. 获取指定文件夹下的特一格式的文件名数组
import { reacddirSync } from 'fs'

const directory = './dataSource'

/** 获取 dataSource文件夹下所有.json格式的文件名称 */
function getNameListFromFolder(dir){
	let fileList = []
	const files = readdirSync(dir)
	files.forEach((item)=>{
		if(item.includes('.json')){
			fileList.push(`${dir}/${item}`)
		}
	)}
	// 读写文件
	fileList.forEach((item)=>{
		readAndWriteFile(item)
	)}
}

getNameListFromFolder(directory)	
  1. 读写文件

读文件:readFile 与 createReadStream

  • fs.readFile() 函数缓冲整个文件。 为了最小化内存成本,在可能的情况下优先通过 fs.createReadStream() 进行流式传输。
  • 中止正在进行的请求不会中止单个操作系统请求,而是中止内部缓冲的 fs.readFile 执行。

写文件:writeFile createWriteStream

  • 在同一个文件上多次使用 fs.writeFile() 而不等待回调是不安全的。 对于这种情况,建议使用 fs.createWriteStream()。
  • 与 fs.readFile 类似,fs.writeFile 是一个便捷的方法,其在内部执行多次 write 调用以写入传给它的缓冲区。 对于性能敏感的代码,则考虑使用 fs.createWriteStream()。
  • 中止正在进行的请求不会中止单个操作系统请求,而是中止内部缓冲的 fs.writeFile 执行。
import { createReadStream, createWriteStream } form 'fs'

const writeFile = './output.txt'
const writeStream = createWriteStream(writeFile)

/** 读取文件,进行数据处理,写入其他文件 */
function readAndWriteFile(path){
	const readStream = createReadStream(path)
	// 当有数据流出时,写入数据
	readStream.on('data',function(chunk){
		// 对chunk进行数据处理,变为newChunk
		// 如果没有写完,暂停读取数据流
		if(writeStream.write(newChunk)===false){
			readStream.pause()
		}
	})
	// 写完后,继续读取
	writeStream.on('drain',function(){
		readStream.resume()
	)}
	//没有数据时,关闭数据流
	readStream.on('end',function(){
		writeStream.end()
	)}
}

参考自 Node.js: fs.readFile/writeFile 和 fs.createReadStream/writeStream 区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值