node.js文件系统
FS文件系统
第一次用这个的时候非常爽,可以在代码层编写“增删改查”文件的功能。分解里面提供的方法,接下来我们从头创建开始,最后删除文件结束,一套流程接下fs文件系统的神奇。
要使用fs文件系统就要引用,否则无法实现功能,代码如下
//引入文件系统 var fs = require(‘fs‘);
新建目录:mkdir
//引入文件系统 var fs = require(‘fs‘); //创建目录 fs.mkdir(‘./html‘,function(err){ if(err){ console.log(err); }else{ console.log(‘创建目录成功!‘); } });
第一步完成了,在当前项目中已经存在一个叫html的文件夹,当我想拿mkdir去创建单独文件是无法实现的,起结果还是一个文件夹,怎么去创建单独的文件呢?
新建文件:writeFlie
//引入文件系统 var fs = require(‘fs‘); //创建文件 fs.writeFile(‘./html/html.txt‘,function(err){ if(err){ console.log(err); }else{ console.log(‘创建文件成功!‘); } });
执行之后,在html文件夹下又多了一个html.txt类型的文件,对于上段代码可重复操作,因为它既能写又能创建文件。
接下来又要考虑一个问题,既然有文件了,但是里面内容怎么去编写,还是同一个方法,就是多了一个参数变化,从下面代码中体现。
//引入文件系统 var fs = require(‘fs‘); var _txt = ‘hello node.js‘; //创建文件 fs.writeFile(‘./html/html.txt‘,_txt,function(err){ if(err){ console.log(err); }else{ console.log(‘创建文件成功!‘); } });
定义了一个_txt变量,放入到writeFile函数中去。这样它就可以在html.txt文件中写入新的内容了。同时这个函数也可以当做更新操作,把原文件内容重新定义。"增删改查",writeFile占据了3样功能,太喜欢这个方式了。
接下来不需这个文件的时候就需要删除操作,fs提供了一个方法
删除文件:unlink
//引入文件系统 var fs = require(‘fs‘); //删除文件 fs.unlink(‘./html/html.txt‘,function(err){ if(err){ console.log(err); }else{ console.log(‘删除文件成功!‘); } });
上面一套简单的流程走完,还有很多方法没有说,接下来一个个来:
能创建目录就能删除目录,
删除目录:rmdir (如果文件夹中存在单独文件,此操作会抛出异常)
//引入文件系统 var fs = require(‘fs‘); //删除目录 fs.rmdir(‘./html‘,function(err){ if(err){ console.log(err); }else{ console.log(‘删除目录成功!‘) } });
运行结果:
如果文件下还存在文件,抛异常,运行结果:
如果对文件不想任何有改动的操作,就只为读取,文件系统提供了readdir函数
读取目录或文件:readdir
//引入文件系统 var fs = require(‘fs‘); //读取目录 fs.readdir(‘./index‘,function(err,data){ if(err){ console.log(err); }else{ console.log(‘读文件成功!‘+ data); } });
只读到文件夹层级,就会把此文件夹下的文件读取出来
读取到单独文件的运行结果:
readdir返回结果是以数组形式呈现
查看路径是否存在:exists
首先说明下我的工程目录,看截图
我要找一下当前目录是否存在的操作:
//引入文件系统 var fs = require(‘fs‘); var _path = __dirname + "/klm"; //判断 fs.exists(_path,function(exist){
if(exist){
console.log(exist + "路径存在...");
}else{
console.log(‘目录路径不存在‘);
}
});
如果存在结果是布尔值true
在fs文件系统也提供了同步操作:writeFileSync(同步写入),readFileSync(同步读取),mkdirSync(同步创建),这里区别就是异步I/O和同步I/O,node.js主要运用异步I/O去处理,提高响应性能,对于同步I/O看什么场景需求了。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。