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.un 删除文件
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.un 删除文件
98 fs.un ('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