fs中所有的特性: fs中每个方法都有对应的同步异步的两种形式
同步方法以Sync结尾,异步支持回调函数
fs中每个异步函数都没有返回值
var fs=require('fs')返回一个大对象
带Sync 是同步的
(ck回调函数) 是异步的
异步
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("写入完毕") })processs.argv 获取命令行参数 返回个数组
操作目录/文件夹
fs.readdir("./src",function(err,paths){ if(err){ throw err } console.log(paths)//返回的是该目录内所有文件集合 })文件批量拷贝
(1)读取src,获取到所有文件的集合
exits返回值是布尔值true,false
存在就是true,不存在就是false
fs.existsSync('lib');判断src是否存在,存在就拷贝 不存在先创建src 在拷贝
流式Node.js移动数据的方式。流可以是可读的或者可写的
由于数据是流,这就意味着在完成文件读取之前,从收到最初几个字节开始,就可以对数据动作
drain 事件表示什么时候只写数据流已经将缓存找那个的数据写入到目标,可传入下一段代写数据
好处:由于数据是流,但这就意味着完成文件读取之前,从收到的最后几个字,就可以对数据的动作动作
大文件拷贝(流)的特点:
流式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);