文件系统 FS——File System
所谓的文件系统,就是对计算机中的文件进行增、删、查、改等操作
是一个服务器的基础
node 通过核心 FS 模块来操作文件系统
- 简单写
// 1. 导入 fs 模块
const fs = require('fs');
// 2. 简单写入文件
fs.writeFile('./hello.txt',
'Hello File System!',
{
encoding:'utf-8',
mode: 0o666, // 4 2 0 可读 可写
flag: 'a' // 追加写操作
},
err=>{
// 3. 判断方法是否出错
if(err){ // 如果出错 err 为一个对象
console.log(err);
}else{
console.log('文件写入成功');
};
}
);- 流式写(可以一点一点写入内容)
// 1. 导入 fs 模块
const fs = require('fs');
// 2. 创建可写流
const ws = fs.createWriteStream('./test.txt'); // 绑定监听事件,监听 可写流 有没有开始工作
ws.on('open', ()=>{
console.log('开始写了!');
}); // 绑定监听事件,监听 可写流 有没有开始工作
ws.on('close', ()=>{
console.log('写完了!');
}); // ws.close(); 会立即关闭 写入流,即使 文件流 内容还没有完全写入文件
// ws.end(); // 等待 写入流 内容全部写入文件,再关闭
// 3. 往 可写流 写入内容
ws.write('丫丫啦个呸的... ...');
ws.write('啥玩意儿?!');
// 4. 关闭写入流
ws.end();
- 简单读
// 1. 导入 fs 模块
const fs = require('fs');
// 2. 读文件
fs.readFile(
'./package.json',
(err, bufData)=>{
if(err){
console.log(err);
}else{
console.log(bufData.toString());
};
}
);- 流式读(可以一点一点读)
// 1. 导入 fs 模块
const fs = require('fs');
// 2. 创建可读流
const rs = fs.createReadStream('D:\\Audiio\\test.mp4'); // 绑定监听事件
rs.on('open', ()=>console.log('开始读!'));
rs.on('close', ()=>console.log('开始读!')); // 绑定读取文件事件
rs.on('data', bufData=>{
console.log('开始读!');
});- 文件复制
const {createReadStream, createWriteStream} = require('fs'); const ws = createWriteStream('./testCopy.mp4'); // 绑定监听事件,监听 可写流 有没有开始工作
ws.once('open', ()=>{
console.log('开始写了!');
}); // 绑定监听事件,监听 可写流 有没有开始工作
ws.once('close', ()=>{
console.log('写完了!');
}); const rs = createReadStream('D:\\Audiio\\test.mp4'); // 绑定监听事件
rs.once('open', ()=>console.log('开始读!'));
rs.once('close', ()=>{
console.log('读完了!');
ws.end(); // 等待 写入流 内容全部写入文件,再关闭
}); // 绑定读取文件事件
rs.on('data', bufData=>{
console.log('读ing');
ws.write(bufData);
});- 管道 读写 数据流
const {createReadStream, createWriteStream} = require('fs'); const ws = createWriteStream('./testCopy.mp4'); const rs = createReadStream('D:\\Audiio\\test.mp4'); rs.pipe(ws);
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5