fs 模块
引入fs模块 文件系统
const fs = require('fs')
良好的编码习惯:变量名和模块名保持一致 , 变量名符合规范, 变量名有代表性
读
fs.readFile('./b.txt',(err,result)=>{
console.log(err);
if(err){
console.log(err);
return;
}
console.log(result);//Buffer(11) [104, 111, 108, 108, 111, 32, 119, 111, 114, 108, 100]
// console.log(result.toString());//hello world
})
回调函数的参数:err 读取文件失败(参数一堆没用不写了)
result 读取成功的数据
如果操作成功了 err 的值null
本目录打开命令行
我们看到
console.log(result);//Buffer(11) [104, 111, 108, 108, 111, 32, 119, 111, 114, 108, 100]
乱码,
console.log(result.toString());转为字符床就能正常输出
写入
//写....会覆盖原来的内容
fs.writeFile('./text2.txt' ,'这是写入的内容',(err)=>{
console.log(err);//写入成功为null
})
fs.writeFile() 执行的覆盖的操作 第一个参数 文件路径 , 第二个参数写入的内容
如果文件存在,覆盖源文件内容, 如果文件不存在,则新建文件并写入内容
追加
//------追加
fs.appendFile('./text2.txt','--这是追加的内容',(err)=>{
console.log(err);
})
如果文件存在则追加内容, 如果文件不存在,则新建并写入内容
删除
//-----------删除
fs.unlink('./text3.txt',(err)=>{
console.log(err);
})
文件重命名
//----------文件重命名
fs.rename('./text3.txt','zhao.txt',(err)=>{
console.log(err);
})
fs.rename() 对文件进行重命名 第一个参数是源文件路径, 第二个参数是新文件名字 , 第三个参数是回调函数
文件系统使用
//创建文件系统
const fs= require('fs');
// 写数据:作用往文件写很多数据
// for (var i = 0; i <100000 ; i++) {
// fs.appendFile('./a.txt',`写入的数据${
i} \n`,(err)=>{
// console.log(err);
// })
// }
读流
//---------读流
const readStream=fs.createReadStream('./a.txt');
let count=0;//读流的次数
readStream.on('data',(chunk)=>{
count++;
console.log(count);
// 参数chunk 是读取的数据
})
// 监听 结束end 事件 当没有可读的数据时自动触发事件
readStream.on('end',()=>{
console.log('读流结束');
})
// 监听 读流失败的事件 error
readStream.on('error',()=>{
console.log('读流过程失败了');
})
写流
// 创建写入流
const writeStream = fs.createWriteStream('./zhao.txt');
// 写入数据
writeStream.write('这是写入的数据hello wrold','utf8');
// 写入结束
writeStream.end();
// 写入完成 触发的事件
writeStream.on('finish',()=>{
console.log('写入完成');
});
管道流pipe()
把a文件的数据流入到text2文件里面
// 创建一个读流
const readStream=fs.createReadStream('./a.txt');
// 创建一个写入流
const writeStream=fs.createWriteStream('./text2.txt');
// 通过管道流实现
readStream.pipe(writeStream);