- 1 /*
- 2 1. fs.stat 检测是文件还是目录(目录 文件是否存在)
- 3 2. fs.mkdir 创建目录 (创建之前先判断是否存在)
- 4 3. fs.writeFile 写入文件(文件不存在就创建,但不能创建目录)
- 5 4. fs.appendFile 写入追加文件
- 6 5. fs.readFile 读取文件
- 7 6. fs.readdir 读取目录
- 8 7. fs.rename 重命名
- 9 8. fs.rmdir 删除目录
- 10 9. fs.unlink 删除文件
- 11 */
- 12
- 13 var fs=require('fs'); //fs是node.js的核心模块,不用下载安装,可以直接引入
- 14
- 15 //1. fs.stat 检测是文件还是目录 fs.statSync()同步获取stats对象,通过返回值接收。
- 16 fs.stat('html',function(error,stats){
- 17 if(error){
- 18 console.log(error);
- 19 return false;
- 20 }
- 21 console.log('文件:'+stats.isFile());
- 22 console.log('目录:'+stats.isDirectory());
- 23 })
- 24
- 25
- 26 //2. fs.mkdir 创建目录
- 27 fs.mkdir('css',function(error){
- 28 if(error){
- 29 console.log(error);
- 30 return false;
- 31 }
- 32 console.log('创建目录成功');
- 33 })
- 34
- 35
- 36 //3. fs.writeFile 写入文件(会覆盖之前的内容)(文件不存在就创建) utf8参数可以省略
- 37 fs.writeFile('123.txt','你好nodejs 覆盖','utf8',function(error){
- 38 if(error){
- 39 console.log(error);
- 40 return false;
- 41 }
- 42 console.log('写入成功');
- 43 })
- 44
- 45
- 46 //4. fs.appendFile 追加文件
- 47 fs.appendFile('123.txt','这是写入的内容\n',function(error){
- 48 if(error){
- 49 console.log(error);
- 50 return false;
- 51 }
- 52 console.log('写入成功');
- 53 })
- 54
- 55
- 56 //5.fs.readFile 读取文件
- 57 fs.readFile('123.txt',function(error,data){
- 58 if(error){
- 59 console.log(error);
- 60 return false;
- 61 }
- 62 //console.log(data); //data是读取的十六进制的数据。 也可以在参数中加入编码格式"utf8"来解决十六进制的问题;
- 63 console.log(data.toString()); //读取出所有行的信息
- 64 })
- 65
- 66
- 67 //6.fs.readdir 读取目录下第一级内容 把目录下面的文件和文件夹都获取到。
- 68 fs.readdir('html',function(error,data){
- 69 if(error){
- 70 console.log(error);
- 71 return false;
- 72 }
- 73 console.log(data); //data是数组类型,包含文件夹以及文件的名字(只有第一级目录内容)。拿到一个文件夹下面的所有目录
- 74 })
- 75
- 76
- 77 //7.fs.rename 重命名 1.改名 2.剪切文件(移动)
- 78 fs.rename('html/index.html','html/news.html',function(error){
- 79 if(error){
- 80 console.log(error);
- 81 return false;
- 82 }
- 83 console.log('修改名字成功');
- 84 })
- 85
- 86
- 87 //8. fs.rmdir 删除目录 rmdir 这个方法只能删除目录,不能删除文件
- 88 fs.rmdir('abc目录',function(error){
- 89 if(error){
- 90 console.log(error);
- 91 return false;
- 92 }
- 93 console.log('删除目录成功');
- 94 })
- 95
- 96
- 97 //9. fs.unlink删除文件
- 98 fs.unlink('index.txt',function(error){
- 99 if(error){
- 100 console.log(error);
- 101 return false;
- 102 }
- 103 console.log('删除文件成功');
- 104 })
- 105
- 106
- 107 //10. fs.createReadStream 从文件流中读取数据,读取的文件比较大时建议用流的方式读取,文件比较大会多次读取。
- 108 var fileReadStream = fs.createReadStream( 'data1.json');
- 109 var str = '';
- 110 fileReadStream.on('data', (data) => {
- 111 console.log("接收到" + data.length); //文件比较大时,会多次读取,多次执行该回调函数
- 112 str += data;
- 113 })
- 114 fileReadStream.on('end', () => {
- 115 console.log(" --- 结束 ---");
- 116 console.log( str );
- 117 })
- 118 fileReadStream.on('error', (error) => {
- 119 console.log(error)
- 120 })
- 121
- 122
- 123 //11. fs.createWriteStream 写入文件流
- 124 var fs = require("fs");
- 125 var data = "我是从数据库获取的数据,我要保存起来";
- 126 var writerStream = fs.createWriteStream('output.txt');
- 127 writerStream.write( data , 'UTF8' );
- 128 writerStream.end(); //标记文件末尾 结束写入流,释放资源
- 129 writerStream.on( 'finish', function() {
- 130 console.log("写入完成。");
- 131 });
- 132 writerStream.on( 'error', function(error){
- 133 console.log(error.stack);
- 134 });
- 135 console.log("程序执行完毕");
- 136
- 137
- 138 //12. pipe 管道流
- 139 var fs = require("fs");
- 140 var readerStream = fs.createReadStream( 'input.txt');
- 141 var writerStream = fs.createWriteStream( 'output.txt');
- 142 readerStream.pipe( writerStream );
- 143 console.log("程序执行完毕");
- 144
- 145
- 146 //13. fs.access 判断目录、文件是否存在(读写权限)
- 147 var fs = require('fs');
- 148 fs.access('package.json',(err)=>{
- 149 console.log(err ? '目录/文件不存在': '文件存在,可以进行读写');
- 150 });
- 151