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)

posted @ 2022-03-22 21:27  青仙  阅读(414)  评论(0编辑  收藏  举报