node常见的操作

本文详细介绍了Node.js中的Buffer类及其基本操作方法,并解释了如何使用FS模块进行文件的同步与异步读写,包括简单文件读写及流式文件处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Buffer本质

  • Buffer类是直接用来存放二进制的缓存区
  • 无需加载就可以使用
  • Buffer中存放的数据都是二进制的,但是显示用16进制
  • 显示的时候,先将十进制转二进制,取前八位,再转成16进制显示
  • 大小一旦确定,不能修改
  • 编码方式是UTF-8
  • 汉字占3个字节,阿拉伯数字和英文字母占1个字节

 

var buff = Buffer.alloc(10);    //创建出来的二进制数据最纯净,但是性能较差。创建时候先将创建数据
                                //  的区域全部清零。Buffer.allocUnsafe()性能更好,但是创建出来的
                                 // Buffer对象可能会包含二进制数据


buff[0]=23;
buff[8]=255;
console.log(buff);//输出的是Buffer对象 <Buffer 17 00 00 00 00 00 00 00 ff 00>
console.log(buff[0]);  //23  单独输出时候为十进制

 

2、Buffer常见方法

(1)Buffer.from():将字符串转换为Buffer对象

//Buffer对象专成字符床
var str ='hello 帅哥!';
var str0 = Buffer.from(str);
console.log(str0); // <Buffer 68 65 6c 6c 6f 20 e5 b8 85 e5 93 a5 ef bc 81>

//字符串专程Buffer对象
str0.toString()

(2)Buffer.alloc(size)

  • 创建一个制定大小的Buffer对象
  • 以前构造Buffer类用new Buffer后来被废除。
  • 改用Buffer.alloc().Buffer.alloc()返回一个指定size的Buffer实例,创建速度比Buffer.allocUnsafe() 慢。
  • 优点:新创建的Buffer实例不会包含旧的或者潜在的敏感数据

(3)Buffer.allocUnsafe()

  • 创建一个指定大小的Buffer对象,可能包含敏感数据

3、同步文件的写入

**fs文件的写入分为同步和异步之分。 **

同步文件的写入,步骤

//引入模块
var fs = require('fs');
//同步打开文件
var fd = fs.openSync('1.txt','w');
//同步写入文件
fs.writeSync(fd,'hello meisi', 20);
//同步关闭文件
fs.closeSync(fd);

(1)fs.openSync(path, flags[, mode])

  • path:路径,字符串
  • flags:打开的方式,是读还是写--w / r
  • 注意:返回值是一个文件的编号

(2)fs.writeSync(fd, string[, position[, encoding]])

  • fd:文件名
  • string:写入的内容,字符串的形式
  • position:开始写入的位置
  • encoding:写入的编码形式,一般是UTF-8

(3)fs.closeSync(fd)

  • fd:关闭的文件名

4、异步文件的写入

步骤:

//引入模块
var  fs = require('fs');
fs.open('1.txt','w',function (err,fd) {
//打开文件没有出错
if(!err){
    //开始写入数据
    fs.write(fd,'11111',function (err) {
        //写入数据没有出错
        if(!err){
            console.log('文件写入成功--')
        }
        //关闭文件
        fs.close(fd,function (err) {
            if(!err){
                console.log('文件关闭成功')
            }
        })
    })
}else {
    console.log('文件出错了')
    }
});
console.log('程序向下执行--');

(1)fs.open(path, flags[, mode], callback)

(2)fs.write(fd, string[, position[, encoding]], callback)

(3)fs.close(fd, callback)

注意:同同步写入比较,多了一个回调。

5、简单文件的写入步骤

var fs = require('fs');
//异步
fs.writeFile('1.txt','niha0',{flag:'a'},function (err,fd) {
if(!err){
    console.log('文件写入成功');
}
else {
    console.log('文件写入异常')
}
});
//同步
fs.writeFileSync('1.txt','222',{flag:'a'});
console.log('同步写入成功');
  • 异步:fs.writeFile(file, data[, options], callback)

  • 同步:fs.writeFileSync(file, data[, options])

  • 注意:options传入一般为一个对象{}

    • encoding :编码,默认为 'utf8'。
    • mode:代表权限,默认为 0o666。
    • flag :读写形式。默认为 'w'。w是将原来的内容全部覆盖
    • 常见的读写形式: 

6、流式文件写入步骤

var fs = require('fs');
var ws  = fs.createWriteStream('hello.txt');
//用once,监听只执行一次
ws.once('open',function () {
    console.log('打开了')
});
ws.write('你好1');
ws.write('你好2');
ws.write('你好3');
ws.write('你好4');
//从开始的地方截断,而不是从结束的地方
ws.end();
  • fs.createWriteStream(path[, options])

7、简单文件的读取

var fs = require('fs');
fs.readFile('6.txt',function (err,data) {
if(!err){
    console.log('读取成功');
    console.log(data);
    console.log(data.toString());
}else {
    console.log('失败')
}
})
  • fs.readFile(path[, options], callback) 异步
  • fs.readFileSync(path[, options]) 同步
  • 分类:同步文件读取、异步文件读取、简单文件读取、流式文件读取

8、流式文件读取

//引入模块
var fs=require('fs');
//创建可读流
var rs = fs.createReadStream('index.mp3');
//创建可写流
var ws =fs.createWriteStream('index0.mp3');
rs.pipe(ws);
  • fs.createReadStream(path[, options])
### 关于 Node.js 的常见面试题 #### 什么是 Node.js? Node.js 是一种可以独立于浏览器运行 JavaScript 文件的软件,它具有单线程、跨平台、非阻塞以及事件驱动的特点[^1]。 #### Node.js 的核心特性是什么? 其核心特性包括单线程、异步 I/O 操作、事件驱动机制和回调函数支持。这些使得它可以高效处理高并发请求。 #### 如何解释 Node.js 中的事件循环 (Event Loop)? JavaScript 并发模型基于“事件循环”,这是 Node.js 处理异步操作的核心概念。通过事件循环,Node.js 能够在不阻塞主线程的情况下管理多个任务[^3][^4]。 #### npm 脚本中的 `pre` 和 `post` 命令有什么作用? 当定义生命周期脚本时,比如 `"dev"`,可以通过前缀 `pre` 或后缀 `post` 来指定额外的任务顺序执行。例如,在运行主要命令之前会先触发 `predev`,之后再触发 `postdev`[^2]: ```json { "scripts": { "predev": "node prev.js", "dev": "node index.js", "postdev": "node post.js" } } ``` #### Node.js 是否完全遵循 ECMAScript 标准? Node.js 实现了 ECMAScript 标准,因此它的语法与 JavaScript 几乎一致,但在某些特定场景下可能有所扩展或差异。 --- ### 示例代码片段展示如何创建简单的 HTTP Server 使用 Node.js: ```javascript const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello World\n'); }); server.listen(8080); console.log('Server running at http://localhost:8080/'); ``` 此代码展示了如何利用内置模块 `http` 创建并启动一个监听端口 8080 的服务器实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值