fs–文件操作系统
fs是nodejs提供的一个核心模块,是用来操作文件以及目录
fs中所有的特性: fs中每个方法都有对应的同步异步的两种形式
同步方法以Sync结尾,异步支持回调函数
fs中每个异步函数都没有返回值
var fs=require('fs')
返回一个大对象
带Sync 是同步的
(ck回调函数) 是异步的
fs读取文件
异步
fs.readFile(文件路径,[opt/str],function(err,data){
ck是读取文件的动作完成之后执行的回调函数
err:null(成功)obj(失败)
data:data(成功)undefiend(失败)
})
fs.readFile("pacage.json",{encoding:"utf-8",flag:"w+"},function(err,data){
r+ 只读 w+读写 a+追加
if(err){
throw err
}
console.log(data)
}
同步
var data=fs.readFileSync("package.json",[opt/str])
var fs=require("fs");
fs.writeFile(文件路径,"写入的内容",[opt/str],function(err){
})
fs.writeFile('a.js',"console.log(0)","utf-8",function(err){
if(err){
throw err
}
console.log("写入完毕")
})
fs写入文件,文件不存在即创建,存在就替换内容
fs.writeFile('文件路径','文件内容',[opt,str],function(err){});
fs.writeSync('文件路径','文件内容',[opt,str])
fs.writeFileSync('./a.js','console.log("aaa")')
追加文件
fs.appendFile("./text.txt","hello",function(err){
if(err){
throw err
}
})
processs.argv 获取命令行参数 返回个数组
操作目录/文件夹
fs.readdir("./src",function(err,paths){
if(err){
throw err
}
console.log(paths)//返回的是该目录内所有文件集合
})
文件批量拷贝
(1)读取src,获取到所有文件的集合
创建文件
fs.mkdir('./a',function(err){})
fs.mkdirSync('./b');
//文件夹存在则不会生成,必须先删除
//fs删除空文件夹 必须是空文件夹不然删不了
fs.rmdir('./a',function(err){
if(err){
throw arr;
}
})
fs.rmdirSync('./b');
判断文件/文件夹是否存在
fs.exists(文件或者文件夹,function(exist){
//异步方式废弃了 不建议使用
console.log(exits);
})
exits返回值是布尔值true,false
存在就是true,不存在就是false
fs.existsSync('lib');
判断src是否存在,存在就拷贝
不存在先创建src 在拷贝
判断文件夹是否存在
Fs.exists(file/dir,function(xist){})
Dist -》存在src ->dist 不存在先创建
if(!fs.existsSync(“./dist”)){
Fs.mkdir(“./dist”,function(){
If(err){
Throw err
}
});
}
fs查看文件信息(大小、种类、创建时间……)
fs.start(路径,function(err,st){})
fs.statSync(路径)
8:isFile();判断是不是个文件
流式Node.js移动数据的方式。流可以是可读的或者可写的
由于数据是流,这就意味着在完成文件读取之前,从收到最初几个字节开始,就可以对数据动作
drain 事件表示什么时候只写数据流已经将缓存找那个的数据写入到目标,可传入下一段代写数据
11:fs查看文件/文件夹信息 判断是文件还是文件夹
fs.star('./lib/a',function(err,st){
if(err){
throw err;
}
console.log(st);
console.log(st.isDirectory());
})
12:重命名
fs.rename(dir/name,要命的名,function(err){
})
13: 流是什么:流是node.js一定数据的方式,是可读的和/盯着可携带的
好处:由于数据是流,但这就意味着完成文件读取之前,从收到的最后几个字,就可以对数据的动作动作
大文件拷贝(流)的特点:
流式node.js中移动数据的一种方式,针对大文件
流是可读的和可写的,好处在于完成文件读取之前,从最初收到的几个字节开始,就可以对文件进行动作
一次性读取在一次性写入的方式不适用与大文件,容易造成内存爆仓,对于大文件来说,只能读一点,写一点,直到拷贝完成。
创建一个可读的流(以流的方式读取文件)
var rs = fs.ReadStream('./dist/4.mp4');
创建一个只写流(以流的方式写入文件)
var ws = fs.WriteStream('./3.mp4');
on监听的意思
大文件的拷贝:
drain事件用来判断什么时候只写数据流已经将缓存中的数据写入到目标,可以传入下一段代写数据
最简单:
创建一个只读数据流
var rs = fs.createReadStream('./dist/1.mp4');
创建一个只写数据流
var ws = fs.createWriteStream('./5.mp4');
管道流输出
rs.pipe(ws);