node基础_读取文件和其它操作
fs中提供了四种读取文件的方式
– 同步文件读取
– 异步文件读取
– 简单文件读取
– 流式文件读取
同步文件读取
fs.readSync
异步文件读取
fs.read
简单文件读取
同步的简单文件读取
fs.readFileSync(path[, options])//同步的简单文件读取,有返回值,返回读取到的数据。
//1,引入文件模块
let fs=require("fs");
//创建一个可写流
let datas=fs.readFileSync("test2.txt");
异步的简单文件读取
fs.readFile(path[, options], callback)//异步的简单文件读取,无返回值。
parh:要读取的文件路径。
options:读取的文件选项。可选参数(带中括号,该参数可写可不写)。
callback(err,data):回调函数,通过回调函数将读取到的数据返回。
err;错误对象
data:读取的的数据,类型为buffer数组。
//1,引入文件模块
let fs=require("fs");
//创建一个可写流
let ws=fs.readFile("test3.txt",function(err,data){
if(!err){
console.log(data.toString());
fs.writeFile("t3.txt",data,function(err2){
if(!err2){
console.log("复制成功");
}
});
}
});
流式文件读取
流式文件读取适用于一些大文件,可以分多次将文件读取到内存中。
从一个文件中读取大量的数据时,最好的方法之一就是流式读取,这样将把一个文件作为Readable流的形式打开。
基本使用:
//1,引入文件模块
let fs=require("fs");
//2,创建一个可读流
let rs=fs.createReadStream("a.mp3");
rs.once("open",function(){
console.log("可读流打开了");
});
rs.once("close",function(){
console.log("可读流关闭了");
});
//给可读流绑定读取的事件
rs.on("data",function(data){
//会自动读取,如果文件过大,会读取多次,每次都是读取65536字节。
console.log(data);
console.log(data.length);
});
练习:边读边写(复制功能):
//1,引入文件模块
let fs=require("fs");
//创建可写流
let ws=fs.createWriteStream("b.mp3");
ws.once("open",function(){
console.log("可写流打开了");
});
ws.once("close",function(){
console.log("可写流关闭了");
});
//2,创建一个可读流
let rs=fs.createReadStream("a.mp3");
rs.once("open",function(){
console.log("可读流打开了");
});
rs.once("close",function(){
console.log("可读流关闭了");
//数据读取完毕,关闭可写流
ws.close();
});
//给可读流绑定读取的事件
rs.on("data",function(data){
//将读取的的数据写入的可写流中
ws.write(data);
});
通过pipe()创建管道优化边读边写:
//1,引入文件模块
let fs=require("fs");
//创建可写流
let ws=fs.createWriteStream("b.mp3");
//2,创建一个可读流
let rs=fs.createReadStream("a.mp3");
//pipe():创建管道,可以将可读流中的内容,直接输出到可写流中。
rs.pipe(ws);
其它操作
获取文件信息
– fs.stat(path, callback)
– fs.statSync(path)
删除文件
– fs.unlink(path, callback)
– fs.unlinkSync(path)
列出文件
– fs.readdir(path[, options], callback)
– fs.readdirSync(path[, options])
重命名文件和目录
– fs.rename(oldPath, newPath, callback)
– fs.renameSync(oldPath, newPath)
监视文件更改写入
fs.watchFile(filename[, options], listener)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!