fs模块用于文件的读写等操做。
该模块有以下这些方法:css
const fs = require('fs'); fs.stat('test.html',function(err,stats){ if(err){ console.log(err); }else{ console.log('文件:' + stats.isFile()); //true console.log('目录:' + stats.isDirectory()); //false } });
接受以下几个参数:html
fs.mkdir('css',function(err){ if(err){ console.log(err); }else{ console.log("建立成功"); } });
var str = "Hello Node.js"; fs.writeFile('write.txt', str, 'utf8', function (err) { if (err) { console.log(err); }else{ console.log("建立成功"); } });
若是该文件不存在则建立该名称文件并写入数据。若是屡次写入的话,那么后面写入的内容会覆盖前面写入的内容。数据库
用法与writeFile
相同,只是对此写入的话不会覆盖以前的数据,而是在其后追加数据。数组
回调函数中的data
即包含了读取的数据。app
fs.readFile('write.txt',function(err,data){ if(err){ console.log(err); }else{ console.log(data.toString()); } });
fs.readdir('css',function(err,data){ if (err){ console.log(err); }else{ console.log(data); } });
不过这样只能获取第一级目录函数
fs.rename('html/index.html','html/news.html',function(err){ if (err) { console.log(err); } else { console.log('修更名字成功'); } })
这样就能够把index.html
文件名修改成news.html
。ui
这个方法还能够实现文件剪切功能:code
fs.rename('html/css/basic.css','html/style.css',function(err){ if(err){ console.log(err); return false; } console.log('剪切成功'); })
这样就能够把html/css/basic.css
剪切到html/style.css
。htm
fs.rmdir('text',function(err){ if(err){ console.log(err); return false; } console.log('删除目录成功'); })
这里的删除只能删除空目录。对象
fs.unlink('index.txt',function(err){ if(err){ console.log(err); return false; } console.log('删除文件成功'); })
这种方式读取文件是分块读取的
// 建立一个能够读取的流,读取文件 input.txt 中 var readStream=fs.createReadStream('input.txt'); var str='';/*保存数据*/ var count=0; /*次数*/ //触发data事件,开始取读数据 readStream.on('data',function(chunk){ str+=chunk; count++; }) //触发end事件,读取完成 readStream.on('end',function(chunk){ console.log(count); console.log(str); }) //读取失败 readStream.on('error',function(err){ console.log(err); })
这种读取方式很高效,适合取读大批量数据。若是所读数据量不是很大的话使用上面的readFile
方法便可。
var data = '我是从数据库获取的数据,我要保存到文件中去\n'; // 建立一个能够写入的流,写入到文件 output.txt 中 var writerStream = fs.createWriteStream('output.txt'); //开始写入数据 writerStream.write(data,'utf8'); //标记写入完成 writerStream.end(); //触发finish事件,完成写入 writerStream.on('finish',function(){ console.log('写入完成'); }) //失败 writerStream.on('error',function(){ console.log('写入失败'); })
一样,若是要写入的文件不存在就建立该文件再写入。
管道提供了一个输出流到输入流的机制。一般咱们用于从一个流中获取数据并将数据传递到另外的一个流中。
// 建立一个可读流,这是管道的输出端 var readerStream = fs.createReadStream('input.txt'); // 建立一个可写流,这是管道的输入端 var writerStream = fs.createWriteStream('output.txt'); // 管道读写操做 // 读取 input.txt 文件内容,并将内容写入到 output.txt 文件中 readerStream.pipe(writerStream); console.log("程序执行完毕");