node js核心模块 fs

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);
发布了149 篇原创文章 · 获赞 166 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/weixin_44369568/article/details/102842833