首先解释一下异步和同步的区别,后面需要会用到。
同步的形式阻塞 Node.js 事件循环和进一步的 JavaScript 执行,直到操作是完成的。而异步不会阻塞node.js事件循环和主进程的javascript的执行。
node读取文件的方式分为同步和异步
读写文件之前,一定要先加载文件模块
let fs = require("fs")
// [] 是可选参数 fs.readFile(path, [,option], callback)
fs.readFile('文件名', (err, data) => { if (err) throw err; console.log(data); })
如果options 是字符串,则是指定字符编码
fs.readFile('文件名', 'utf8', callback);
fs.readFileSync(path[, options])
fs.readFileSync('文件名')
// file 文件路径 // data 要写入的数据 // options 可选配置 // calllback 回调函数 fs.writeFile(file, data[, options], callback)
fs.writeFile('text.txt', 'hello,world','utf8', callback)
// file 文件路径 // data 要写入的数据 // options 可选配置 fs.writeFileSync(file, data[, options])
fs.writeFileSync('text.txt', 'hello,world')
node.js删除文件是分为同步和异步。
const fs = require('fs'); try { fs.unlinkSync('/tmp/hello'); console.log('/tmp/hello 已被成功地删除'); } catch (err) { // 处理错误 }
异步删除文件: fs.unlink()
如果操作被成功地完成,则第一个参数是 null 或 undefined。
const fs = require('fs'); fs.unlink('/tmp/hello', (err) => { if (err) throw err; console.log('/tmp/hello 已被成功地删除'); });
异步删除结合promise使用
const fs = require('fs/promises'); (async function(path) { try { await fs.unlink(path); console.log(`${path} 已被成功地删除`); } catch (error) { console.error('有一个错误:', error.message); } })('/tmp/hello')
writeFile函数虽然可以写入文件,但是如果文件已经存在,我们只是想添加一部分内容,它就不能满足我们的需求了,很幸运,fs模块中还有appendFile函数,它可以将新的内容追加到已有的文件中,如果文件不存在,则会创建一个新的文件。使用方法如下:
也是分为同步操作和异步操作
// 参数用法同上 fs.appendFile(path, data[, options], callback) // 编码格式默认为"utf8" fs.appendFile('test.txt', 'data to append', function (err) { if (err) throw err; //数据被添加到文件的尾部 console.log('The "data to append" was appended to file!'); });
fs.appendFileSync(path, data[, options])
try { fs.appendFileSync('文件.txt', '追加的数据'); console.log('数据已被追加到文件'); } catch (err) { /* 处理错误 */ }
// 读取 fs.readFile("./1.png",function(err,data){ // 写入 fs.writeFile("c://1.png",data,function(err){ console.log(err); })
var rs=fs.createReadStream("./source.txt"); var ws=fs.createWriteStream("./target.txt"); var chunks=""; rs.on("data",function(data){ console.log("读取中"); chunks+=data.toString(); ws.write(data.toString(),function(){ console.log("写入中") }); }); rs.on("end",function(){ console.log("文件读取完成"); console.log(chunks);
fs.createReadStream("./data.txt").pipe(fs.createWriteStream("./copy4.txt"));