node:你还在用readFile和writeFile?fs新方式快速读写文件,支持大文件读写,安全放心才是首选
目录
- 更多分享:www.catbro.cn
文件操作
-
优点:快速读写,支持大文件读写,支持自动关闭close
-
啥也不说,先上代码吧,自己封装的:
const fs = require('fs') const path = require('path') class FileUtils { constructor() { } checkFile(path) { return new Promise((resolve, reject) => { try { let result = fs.existsSync(path); if (result) { resolve(true) } else { resolve(false) } } catch (e) { reject(e) } }); } readFile(path, opts = 'utf8') { return new Promise((resolve, reject) => { try { var input = fs.createReadStream(path, { encoding: 'utf8', autoClose: true, }); var remaining = ''; input.on('data', function (data) { remaining += data; var index = remaining.indexOf('\n'); var last = 0; while (index > -1) { var line = remaining.substring(last, index); last = index + 1; func(line); index = remaining.indexOf('\n', last); } remaining = remaining.substring(last); }); input.on('end', function () { resolve(remaining) }); } catch (e) { console.error('Error writeObjectToJsonString:', e); resolve(e) } }) } writeFile(path, data, opts = 'utf8') { return new Promise((resolve, reject) => { var out = undefined; out = fs.createWriteStream(path, { encoding: 'utf8' }); out.write(data,(error) => { if (error) { reject(error) } else { resolve() } }); out.end(); }) } mkdirs(dirname) { return new Promise((resolve, reject) => { if (!fs.existsSync(dirname)) { fs.mkdir(dirname, {recursive: true}, (err) => { if (err) { reject(err) } else { resolve() } }); } else { resolve(); } }); } } module.exports = new FileUtils();