博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习笔记:node.js(一)
阅读量:6077 次
发布时间:2019-06-20

本文共 2447 字,大约阅读时间需要 8 分钟。

模块——require/exports/module

var fs = require('fs');var http = require('http');  //引用模块module.exports = function(){} // 输出模块

文件拷贝

小文件拷贝

var fs = require('fs');function copy(src, dst) {    fs.writeFileSync(dst, fs.readFileSync(src));}function main(argv) {    copy(argv[0], argv[1]);}main(process.argv.slice(2));

process是一个全局变量,可通过process.argv获得命令行参数。由于argv[0]固定等于nodejs执行程序的绝对路径,argv[1]固定等于主模块的绝对路径,因此第一个命令行参数从argv[2]这个位置开始。

大文件拷贝

var fs = require('fs');function copy(src, dst) {    fs.createReadStream(src).pipe(fs.createWriteStream(dst));}function main(argv) {    copy(argv[0], argv[1]);}main(process.argv.slice[2]);

Buffer(数据块)

Buffer提供了对二进制数据的操作。

构造Buffer实例:

var bin = new Buffer([0x68, 0x6c, 0x6c, 0x6f]);

Buffer与字符串互相转化:

var str = bin.toString('utf-8'); // => "hello"将字符串转换为指定编码下的二进制数据:var bin = new Buffer('hello', 'utf-8'); // => 

Buffer与字符串的区别:

字符串是只读的,并且对字符串的任何修改得到的都是一个新的字符串,原字符串保持不变,至于Buffer,更像是可以做指针操作的c语言数组,改变的是指针的指向,如果修改的话,原Buffer也会被改动。

var bin = new Buffer([0x68, 0x65, 0x6c, 0x6c, 0x6f]);var sub = bin.slice(2);sub[0] = 0x65;console.log(bin); // => 

如果想拷贝一份Buffer,得首先创建一个新的Buffer,并通过.copy方法把原Buffer中的数据复制过去。

var bin = new Buffer([0x68, 0x65, 0x6c, 0x6c, 0x6f]);var dup = new Buffer(bin.length);bin.copy(dup);dup[0] = 0x48;console.log(bin); // => 
console.log(dup); // =>

Stream(数据流)

如果内存无法一次装下需要处理的数据时,就需要用到数据流,一边读取一边处理。

var rs = fs.createReadStream(pathname);rs.on('data', function(chunk) {    rs.pause(); //在处理数据前暂停数据读取,并在处理数据后继续读取数据    dosomething(chunk);});rs.on('end', function() {    cleanUp();});

为数据目标创建一个只写数据流,示例如下:

var rs = fs.createReadStream(pathname);var ws = fs.createWriteStream(dst);rs.on('data', function(chunk) {    if(ws.write(chunk) === false) { //写入速度跟不上读取速度时,只写数据流内部的缓存会爆仓,根据返回值判断传入的数据时写入目标了还是临时放在缓存了        rs.pause(); //如果是放入缓存,就暂停数据数据读取    }});rs.on('end', function() {    ws.end();});ws.on('drain', function() {    rs.resume();});

File System(文件系统)

fs模块提供的api基本上可以分为三类:

  • 文件属性读写

    fs.stat、fs.chmod、fs.chown等

  • 文件内容读写

    fs.readFile、fs.readdir、fs.writeFile、fs.mkdir等

  • 底层文件操作

    fs.open、fs.read、fs.write、fs.close等
    基本所有的fs模块api的回调参数都是两个
    fs.readFile(pathname, function(err, data) {

    if(err) {    //deal with error.}else {    //deal with data.}

    }); //异步IO模型

    try {

    var data = fs.readFileSync(pathname);//deal with data.

    } catch (err) {

    //deal with error.

    }; //同步模型

Path(路径)

  • path.normalize(key) //将传入的路径转换成标准路径

  • path.join() //将传入的多个路径拼接为标准路径

  • path.extname //取得文件的扩展名

    path.extname('foo/bar.js');  // => ".js"

转载地址:http://ucagx.baihongyu.com/

你可能感兴趣的文章
bundle id
查看>>
用shell统计表格数据
查看>>
iproute2+tc notes
查看>>
【PythonChallenge】Level 5
查看>>
OpenCV合成视频
查看>>
魔幻般冒泡背景的CSS3按钮动画
查看>>
Leetcode: Median of two sorted Array
查看>>
MySQL常见报错汇总
查看>>
Zuul 网关搭建
查看>>
合并两个有序链表
查看>>
[HDU2222] Keywords Search
查看>>
射极跟随器的设计及参数确定
查看>>
电脑硬盘空间怎么越来越小
查看>>
android SystemUI导入eclipse 编译
查看>>
架构师速成-架构体系
查看>>
用minGW编译ffmpeg(供替换opencv中引用的ffmpeg库)
查看>>
MySQL多实例配置
查看>>
Nginx 一个高性能的HTTP和反向代理服务器
查看>>
IT男剁手指南:花钱也是一门大学问
查看>>
扒一扒程序员们最爱的网络游戏
查看>>