fs算是node.js中太常见的模块了,定位于文件系统模块,主要负责读写文件,fs同时提供了异步和同步方法。
- 读取文件:
let fs=require('fs');//下面代码不再写这句
///readFile为异步读取文件,传入的回调函数接收两个参数:err,data.当正常读取时,err参数为null,data参数为读取到的String。当读取发生错误时,err参数代表一个错误对象,data为undefined。异步请求的时候,无需等待,后面代码正常执行。
fs.readFile('./a.txt','utf-8',(err,data)=>{
if (err) {console.log(err.code)}
else {console.log(data)};
});
///readFileSync为同步读取文件,同步读取错误时候,可以用try...catch进行捕获
try {
var data = fs.readFileSync('./b.txt', 'utf-8');
console.log(data);
} catch (err) {
console.log(err)
}
- 写入文件:
///fs.writeFile为异步写入方法,不管同步还是异步,当路径文件不在的时候,node会自动创建文件
let content="喜剧之王";
fs.writeFile('./text4.txt',content,(err)=>{
if(err){console.log('异步失败');
}else{console.log('异步成功')};
});
///同样适用try...catch捕获同步可能的错误
try{
fs.writeFileSync('./text3.txt');
console.log('同步成功')
}catch(err){
console.log('同步失败')
}
///fs.appendFile是给文件追加内容,同样有同步与异步两个API
fs.appendFile('./text4.txt','周星驰',(err,data)=>{
if(err){console.log(123)}else{
console.log('异步成功')
}});
try{fs.appendFileSync('./text4.txt','至尊宝')
console.log('同步追加成功')
}catch(err){
console.log(err)
}
- 获取信息:
///fs.stat()获取文件大小、创建时间等信息,fs.stat()返回一个stat()对象,
fs.stat('./text4.txt',(err,data)=>{
if(err){
console.log('stat出错了')
}else{
console.log(data)
}
})
//同样的stat也有一个对应的同步函数fs.statSync()
try{
let data=fs.statSync('./hello.js');
console.log(data)
}catch(err){
console.log('sorry ')
}
- fs管道pipe:
// 就像可以把两个水管串成一个更长的水管一样,两个流也可以串起来。一个Readable流和一个Writable流串起来后,所有的数据自动从Readable流进入Writable流,这种操作叫pipe。
let wsP=fs.createWriteStream('a.txt','utf-8');
let rsP=fs.createReadStream('b.txt','utf-8');
rsP.pipe(wsP );
//通过管道,把b.txt文件读取的内容写入到a.txt,相当于复制了一份b.txt
fs的方法很多,又截图部分就能见着了(虽然图片有点伤。。。),我们都可以通过源码学模块。