Node.js基础 学习笔记(2)

发布时间:2022-07-01 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Node.js基础 学习笔记(2)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

目录

一,buffer(缓冲区)

二,同步文件写入

三,异步文件写入

四,简单文件写入


一,buffer(缓冲区)

/**
 * Buffer(缓冲区)
 * buffer的结构和数组很像,操作的方法也和数组类似
 * 数组中不能存储二进制的文件,而buffer就是专门用来存储二进制数据
 * 在buffer中存储的都是二进制数据,但是在显示时都是以16进制的形式显示
 * buffer中每一个元素的范围是从00 - ff  0 - 25
 * 
 * 计算机一个0 或一个1 我们称之为1位(bIT) 8bit = 1byte(字节)
 * buffer中的一个元素,占用内存的一个字节
 * buffer的大小一旦确定,则不能修改,buffer实际上是对底层内存的直接操作
 */

VAR str = "Hello Atguigu";

//将一个字符串保存到buffer中
var buf = Buffer.From(str);

// console.LOG(buf.length);//占用内存的大小
// console.log(str.length);//字符串的长度
// console.log(buf);

// 创建一个指定大小的buffer
// butter构造函数都是不推荐使用的
// var buf2 = new Buffer(10);//10个字节的buffer
// console.log(buf2.length);

// 创建一个10个字节的buffer
var buf2 = Buffer.alloc(10);
console.log(buf2.length);

// buffer.allocUnsafe(size) //创建一个指定大小的buffer,但是buffer中可能含有敏感数据。

// Buffer.from(str) 将一个字符串转换为buffer
// Buffer.alloc(size) 创建一个指定大小的buffer
// Buffer.allocUnsafe(size) 创建一个指定大小的buffer,但是可能含有敏感数据。
// buf.toString() 将缓冲区中的数据转换为字符串

二,同步文件写入

/*
    文件系统(File System)
        - 文件系统简单来说就是通过Node来操作系统中的文件
        - 使用文件系统,需要先引入fs模块,fs是核心模块,直接引入不需要下载

    同步文件的写入
        - 手动操作的步骤
            1.打开文件
            fs.oPEnSync(path[, flags[, mode]])
                path 要打开文件的路径
                flags 打开文件要做的操作的类型 r 只读的 w 可写的
                mode 设置文件的操作权限,一般不传
                返回值F1a;
                该方法会返回一个文件的描述符作为结果,我们可以通过该描述符来对文件进行各种操作

            2.向文件中写入内容
            fs.writeSync(fd, string[, position[, encoding]])
                fd 文件的描述符,需要传递要写入的文件的描述符
                string 要写入的内容
                position 写入的起始位置
                encoding 写入的编码,默认utf-8

            3.保存并关闭文件
            fs.closeSync(fd)
                fd 要关闭的文件的描述符
*/
var fs = require("fs");

// 打开文件
var fd = fs.openSync("hello.txt","w");
console.log(fd);

// 向文件中写入内容
fs.writeSync(fd,"今天天气真不错~~~");

// 关闭文件
fs.closeSync(fd);

三,异步文件写入

/*
    异步文件写入
    打开文件
    fs.open(path[, flags[, mode]], callback)
        用来打开一个文件
        异步调用的方法,结果都是通过回调函数的参数返回的
        回调函数两个参数
        err 错误对象,如果没有错误则为null
        fd 文件的描述符
    
    异步写入文件
    fs.write(fd, string[, position[, encoding]], callback)

    关闭文件
    fs.close(fd[, callback])
*/

// 引入fs模块
var fs = require("fs");

// 打开文件
fs.open("hello2.txt","w",function(err,fd){
    // 判断是否出错
    if(!err){
        // 如果没有出错,则对文件进行写入操作
        fs.write(fd,"这是异步写入的内容",function(err){
            if(!err){
                console.log("写入成功");
            }

            // 关闭文件
            fs.close(fd,function(err){
                if(!err){
                    console.log("文件已关闭~~~");
                }
            });
        });
    }else{
        console.log(err);
    }
});

四,简单文件写入

/*
    简单文件写入
    fs.writeFile(file, data[, options], callback)
    fs.writeFileSync(file, data[, options])
        file 要操作的文件的路径
        data 要写入的数据
        options 选项,可以对写入进行一些设置
        callback 当写入完成以后执行的函数
        flag
        r 只读
        w 可写
        a 追加
        

*/

// 引入fs模块
var fs = require("fs");

fs.writeFile("hello.txt","这是通过writeFile写入的内容",function(err){
    if(!err){
        console.log(写入成功);
    }
});

// C:UserswujincaiDesktop 获取桌面文件写入
var fs = require("fs");

fs.writeFile("C:/Users/wujincai/Desktop/hello.txt","这是通过writeFile写入的内容",function(err){
    if(!err){
        console.log(写入成功);
    }
});

五,流式文件写入

/*
    同步,异步,简单文件的写入都不适合大文件的写入,性能较差,容易导致内存溢出。

*/

var fs = require("fs");

// 流式文件写入
// 创建一个可写流
/*
    fs.createWritestream(path[, options])
        可以用来创建一个可写流
        path 文件路径
        options 配置的参数

*/
var ws = fs.createWriteStream("hello3.txt");

// 可以通过监听流的open和close事件来监听流的打开和关闭
/*
    on(事件字符串,回调函数)
        可以为对象绑定一个事件

    once(事件字符串,回调函数)
        可以为对象绑定一个一次性的事件,该事件将会在触发一次以后自动失效
*/
ws.once("open",function(){
    console.log("流打开了~~");
});

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

// 通过ws向文件中输入内容
ws.write("通过可写流写入文件的内容;");
ws.write("天气好");
ws.write("真不错");

//关闭流
ws.end();

脚本宝典总结

以上是脚本宝典为你收集整理的Node.js基础 学习笔记(2)全部内容,希望文章能够帮你解决Node.js基础 学习笔记(2)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。