node.js 里fs模块
常用的功能
实现文件的读写 目录的操作
- 同步和异步共存 ,有异步不用同步
- fs.readFile 都不能读取比运行内存大的文件,如果文件偏大也不会使用readFile方法
- 文件大分流读取,stream
- 引入fs模块
- let fs=require(‘fs‘)
同步读取文件
-fs.readFileSync(‘路径‘,utf8);
???let result=fs.readFileSync(‘./1.txt‘,‘utf8‘);
异步读取文件,用参数err捕获错误
- fs.readFile(‘路径‘,‘utf8‘,function(){})
???fs.readFile(‘./name.txt‘,‘utf8‘,function(err,data){
???????if(err){
???????????console.log(err)
???????}else{
???????????console.log(data)
???????}
???})
同步写入文件
- fs.writeFileSync("路径",写入的数据)
???fs.writeFileSync("./1.txt",JSON.stringify({name:1}))
异步写入文件
- fs.writeFile(‘路径‘,写入的数据,callback)
???fs.writeFile(‘./1.txt‘,‘aaaaa‘,function (err) {
???????????if(err){
???????????????console.log(err);
???????????}
???})
读写文件写一个拷贝实例
let fs=require("fs");//同步拷贝function copySync(source,target){//同步读取let result=fs.readFileSync(source,‘utf8‘);//同步写入fs.writeFileSync(target,result);}copySync("./age.txt",‘./1.txt‘);
???
???
???//异步拷贝
function copy(sourse,target,callback){
//异步读取
fs.readFile(sourse,‘utf8‘,function(err,data){if(err){return callback(err)}else{//异步写入fs.writeFile(target,data,callback)}});};copy(‘./name.txt‘,‘./ss.txt‘,function(err){if(err) return console.log(err);console.log(‘拷贝成功‘)})
判断文件存不存在
- fs.existsSync(‘文件的路径‘)
stat方法
???fs.stat(‘文件路径‘,function (err,stat) {
???
?????????stat.isDirectory 看是不是文件夹 ????????????????????????????
?????????stat.isFile 看是不是文件
???
???})
删除文件夹
- fs.rmdir(‘文件夹路径‘,function(){})
删除文件
- fs.unlink(‘文件路径‘,function(){})
//判断文件存不存在
if(fs.existsSync(‘./b‘)){fs.stat(‘./b‘,function (err,stat) {//stat中的time是用来做服务器缓存//stat.isDirectory看是不是文件夹 stat.isFile看是不是文件if(stat.isDirectory()){//删除文件夹fs.rmdir(‘./b‘,function(){})}else{//删除文件fs.unlink(‘./b‘,function(){});}})}
利用递归写一个文件夹依次创建
function md(url) { ???let paths=url.split(‘/‘); //将a/b/c拆分成数组[‘a‘,‘b‘,‘c‘] ???let index=0; ???function make(path){ ???????if(index===paths.length+1){ // 如果到终点,停止递归 ???????????return false; ???????} ???????if(!fs.existsSync(path)){ //不存在 ???????????//创建文件夹 ???????????fs.mkdir(path,function () { ???????????????make(paths.slice(0,++index).join(‘/‘)) ???????????}) ???????}else{ //存在 ???????????make(paths.slice(0,++index).join(‘/‘)) ???????} ???} ???make(paths[index++]) //先取出第一个}md(‘a/b/c/d‘);
node.js的fs核心模块读写文件操作 ?-----由浅入深
原文地址:http://www.cnblogs.com/null11/p/7499091.html