node模块
fs文件系统模块----负责读写文件
ps:和其他js模块不同的是,fs文件系统模块同时提供了
同步
和异步
的方法
读取文件
- readFile(file, ‘utf-8’, callback) : 异步读取文件 —
回调函数中
捕获错误和获取读取的值,回调函数参数(err, data)
- readFileSync(file, ‘utf-8’) :同步读取文件 — 利用
try{...} catch(e) {...}
捕获错误,函数直接返回读取的值
var fs = require('fs');
// 异步读取
fs.readFile('simple.txt', 'utf-8', function (err, data) {
if (err) {
console.log(err);
} else {
console.log(data);
}
});
// 读取二进制文件 --- eg: 图片
fs.readFile('1.jpg', function (err, data) { // 不传编码规则 则返回Buffer对象
if (err) {
console.log(err);
} else {
console.log(data);
console.log(data.length + 'bytes');
let test = data.toString('utf-8'); // Buffer对象转string
console.log(test);
let buf = Buffer.from(test, 'utf-8'); // string转Buffer对象
console.log(buf);
}
})
// 同步读取文件 ----- 用try...catch()捕获错误
try {
var data = fs.readFileSync('simple.txt', 'utf-8');
console.log(data);
} catch (err) {
console.log(err)
}
写入文件
- writeFile(file, data, callback) : 异步写入文件 — 回调函数中捕获错误,回调函数
只有一个err参数
- writeFileSync('file, data) :同步写入文件 — 利用
try{...} catch(e) {...}
捕获错误
ps:若data为
字符串
,则按utf-8编码
规则写入,若为Buffer对象
,则以二进制文件
写入
获文件大小、创建时间等信息
- fs.stat() : 异步查询,返回一个Stat对象,告诉我们文件或目录的详细信息 — 回调函数中获取该对象
- fs.statSync() :同步查询,直接返回一个Stat对象
fs.stat('input.txt', function (err, stat) {
if (err) {
console.log(err);
} else {
console.log(stat.isFile());
console.log(stat);
}
})
let stat = fs.statSync('input.txt')
console.log(stat);
stream — 仅在服务器端可用的模块,目的:支持流数据结构
stdin 标准输入流 — 键盘输入到应用程序
stdout 标准输出流 — 应用程序输出到显示器
PS:流的特点是数据是
有序
的,而且必须依次读取
,或者依次写入
,不能
像Array那样随机定位
。
createReadStream ---- 文件读取流
流的事件
- data 事件 — 表示流的数据已经可以读取了
- end 事件 — 表示流已经到末尾了,没有数据可以读取
- err事件 — 表示出错了
createWriteStream ---- 文件写入流
- write() ---- 不断写入
- end() — end函数结束
'use strict';
var fs = require('fs')
var ws1 = fs.createWriteStream('output1.txt', 'utf-8');
ws1.write('使用Stream写入文本数据...\n');
ws1.write('END.');
ws1.end();
pipe() ----- 一个Readable流和一个Writable流串起来后,所有的数据自动从Readable流进入Writable流
'use strict';
var fs = require('fs');
var rs = fs.createReadStream('sample.txt');
var ws = fs.createWriteStream('copied.txt');
rs.pipe(ws);
ps:实际上就是复制文件
默认情况下,当Readable流的数据读取完毕
,end事件触发后,将自动关闭Writable流
。如果我们不希望自动关闭Writable流,需要传入参数
:readable.pipe(writable, { end: false });
转载:https://blog.csdn.net/qq_41261490/article/details/101701984
查看评论