node的fs模块
1 let fs = require('fs'); 2 3 2. 同步读取 4 let fd = fs.readFileSync(__dirname + '/source/a.txt'); 5 console.log(fd); 6 console.log(fd.toString()); 7 8 console.log('后续的操作'); 9 10 3. 异步读取 11 fs.readFile(__dirname + '/source/a.txt', (err, data)=>{ 12 if(!err){ 13 console.log(data); 14 console.log(data.toString()); 15 } 16 }); 17 console.log('后续的操作');
1 let fs = require('fs'); 2 3 // 1. 打开文件 4 let fd = fs.openSync(__dirname + '/source/b.txt', 'w'); 5 console.log(fd); 6 7 // 2. 同步写入内容 8 fs.writeFileSync(fd, '哈哈哈!'); 9 10 // 3. 保存并退出 11 fs.closeSync(fd); 12 13 // 4. 后续操作 14 console.log('后续的操作');
1 let fs = require('fs'); 2 3 // 1. 打开文件 4 fs.open(__dirname + '/source/c.txt', 'a', (err, fd) => { 5 if (!err) { 6 // 2. 写入文件 7 fs.writeFile(fd, '小撩漂亮!哈哈哈哈' + Date.now() + '\n', (err)=>{ 8 if(!err){ 9 console.log('写入文件成功'); 10 }else { 11 throw err; 12 } 13 }); 14 15 // 3. 关闭文件 16 fs.close(fd, (err)=>{ 17 if(!err){ 18 console.log('文件已经保存并关闭!'); 19 }else { 20 throw err; 21 } 22 }) 23 } 24 }); 25 26 // 后续操作 27 console.log('后续操作');
1 let fs = require('fs'); 2 3 let copy = (src, target, callBack)=>{ 4 fs.readFile(src, (err, data)=>{ 5 if(!err){ // 读取成功 6 fs.writeFile(target, data, (err, data)=>{ 7 if(!err){ // 写入成功 8 callBack && callBack(err, data); 9 }else { 10 throw err; 11 } 12 }); 13 } 14 }); 15 }; 16 17 copy(__dirname + '/source/b.txt', __dirname + '/source/d.txt', (err)=>{ 18 if(!err){ 19 console.log('拷贝成功!'); 20 } 21 });
1 let fs = require('fs'); 2 3 // 1. 读取图片 4 /* 5 fs.readFile('C:/Users/yejianhua/Desktop/girl.jpg', (err, data)=>{ 6 if(!err){ 7 // 2. 写入图片文件 8 fs.writeFile(__dirname + '/source/girl.jpg', data, (err)=>{ 9 if(err) throw err; 10 console.log('写入成功'); 11 }); 12 } 13 }); 14 */ 15 16 17 fs.readFile('C:/Users/yejianhua/Desktop/lk.mp4', (err, data)=>{ 18 console.log(data); 19 if(!err){ 20 // 2. 写入图片文件 21 fs.writeFile(__dirname + '/source/lk.mp4', data, (err)=>{ 22 if(err) throw err; 23 console.log('写入成功'); 24 }); 25 } 26 });
1 let fs = require('fs'); 2 3 // 1. 创建读写流 4 let rs = fs.createReadStream('C:/Users/yejianhua/Desktop/lk1.mp4'); 5 let ws = fs.createWriteStream(__dirname + '/source/lk888.mp4'); 6 7 // 2. 监听流的打开 8 rs.once('open', ()=>{ 9 console.log('写入流已经打开了~'); 10 }); 11 12 ws.once('open', ()=>{ 13 console.log('读入流已经打开了~'); 14 }); 15 16 // 3. 监听data 17 rs.on('data', (data)=>{ 18 console.log(data); 19 ws.write(data); 20 }); 21 22 // 4. 监听流的关闭 23 rs.once('end', ()=>{ 24 console.log('读入数据已经完成~'); 25 }); 26 27 rs.once('close', ()=>{ 28 console.log('读入数据通道关闭~'); 29 });
let fs = require('fs'); // 1. 创建读写流 let rs = fs.createReadStream('C:/Users/yejianhua/Desktop/lk1.mp4'); let ws = fs.createWriteStream(__dirname + '/source/lk999.mp4'); // 2. 创建管道 rs.pipe(ws);
1 let fs = require('fs'); 2 3 4 5 6 // 1. 创建读写流 7 let rs = fs.createReadStream('C:/Users/yejianhua/Desktop/lk1.mp4'); 8 let ws = fs.createWriteStream(__dirname + '/source/lk000.mp4'); 9 10 rs.on('data', (data)=>{ 11 let flag = ws.write(data); 12 console.log(flag); 13 // 判断 14 if(!flag){ 15 // 暂停 16 rs.pause(); 17 } 18 }); 19 20 ws.on('drain', ()=>{ 21 // 继续读取流 22 rs.resume(); 23 }); 24 25 rs.on('end', ()=>{ 26 ws.end(); 27 }); 28 29 自己写方法实现pipe功能