node基础_写入文件

写入文件

fs中提供了四种不同的方式将数据写入文件
– 同步文件写入
– 异步文件写入
– 简单文件写入
– 流式文件写入

同步文件写入

//1,引入文件模块
let fs=require("fs");
//2,打开文件
let result=fs.openSync("test.txt","w");

//3,同步往文件写入内容
fs.writeSync(result,"今天天气真好",6);

//4,关闭文件,如果不关闭,打开的文件会一直在内存里运行,会造成资源浪费。
fs.closeSync(result);

异步文件写入

//1,引入文件模块
let fs=require("fs");
//2,打开文件
fs.open("test.txt","w",function(error,fd){
    if(!error){
        //3,异步往文件写入内容
        fs.write(fd,"今天天气真好",function(err){
            if(!err){
                console.log("写入成功");
            }
            //关闭打开的文件
            fs.close(fd,function(err2){
                console.log("文件关闭");                           
            });
        });
    }else{
        console.log(error);
    }
});

简单文件写入

简单同步文件写入

fs.writeFileSync(file, data[, options])

简单异步文件写入

fs.writeFile(file, data[, options], callback)
file:要操作的文件路径
data:要写入的数据。
options选项:可以对写入进行一些设置,这个参数是可选参数。是一个对象,如{flag:"a"},不加默认是覆盖写入。
callback:当写入完成后执行的回调函数。
如:

let fs=require("fs");

fs.writeFile("test2.txt","看我有没有把你覆盖掉",{flag:"a"},function(error){
    if(!error){
        console.log("写入成功");
    }
});


流式文件写入

往一个文件中写入大量数据时,最好的方法之一是使用流。
同步、异步、简单文件写入都不适合大文件的写入,性能较差,容易导致内存溢出。

fs.createWriteStream(path[, options]):可以创建一个可写流
path:文件路径
options:配置参数,可以不用写,因为是带中括号的。

//1,引入文件模块
let fs=require("fs");

//创建一个可写流
let ws=fs.createWriteStream("test3.txt");

//可以通过事件监听流的open和close事件来监听流的打开和关闭。
//on(事件字符串,回调函数):可以位对象绑定一个事件。
//once(事件字符串,回调函数):可以为对象绑定一个一次性的事件,该事件将会在触发一次后自动失效。
ws.once("open",function(){
    console.log("流打开了");
});

ws.once("close",function(){
    console.log("流关闭了");
});

ws.write("今天天气真晴朗,");//流写入也是异步的。也就是这行代码不会阻塞程序运行。
ws.write("我是中间人,");
ws.write("处处好风光。");

//关闭流
ws.close();
posted @ 2022-03-22 20:38  青仙  阅读(685)  评论(0编辑  收藏  举报