node.js 学习笔记(2)

之前的笔记 就不一一去列出来了
因为自己用到的东西不多 也不清楚哪个是常用的 下面就随便列列吧

node.js 学习笔记(2)_第1张图片
image.png

  • buffer

我们在使用Node.js做服务端开发时,http、tcp、udp、文件io等等类型的操作,都会用到Buffer
Buffer代表一个缓冲区,存储二进制数据,是字节流。我们在网络传输时,就传输的这种字节流。写文件时,也是写的字节流。

node.js 学习笔记(2)_第2张图片
特点.png

API


node.js 学习笔记(2)_第3张图片
image.png
  • fs 模块

在Node.js中,使用fs模块来实现所有有关文件及目录的创建,写入及删除操作。在fs模块中,多有文件及目录的操作都可以使用同步或异步这两种方法,即readFile 和readFileSync,有Sync后缀的方法为同步方法,不具有Sync后缀的方法均为异步方法。

  • readFile readFileSync fs.readFile(filename,[options],function(err,data){ })
  • 第一个参数filename:表示要读取文件的路径和名称
  • 第二个参数option:指定使用哪种编码格式来读取该文件,可指定的属性值为‘utf-8’,‘ascii’,‘base64’,
  • 第三个参数callback:表示文件服务完毕后执行的回调函数,回调函数的第一个参数err,为读取文件操作失败时触发的错误对象,第二个参数data,表示读取文件成功后读取到的文件内容。
var fs = require('fs');
var data = fs.readFile('./index.txt', 'utf-8', function(err,data){
    // 操作结果作为回调函数的第二个参数返回
    if (err) {
        console.log('读取文件发生错误')
    }else {
        console.log(data);
    }
});
image.png
  • writeFile writeFileSync fs.writeFile(path, data, [options], function(err){ });
var fs = require('fs');
fs.writeFile('./message.txt','这是写入的数据',function(err){
    if(err){
        console.log('写文件操作失败。')
    }else {
        console.log('写文件操作成功。')
    }
})

如果message文件不存在 则会创建message.txt
如果message文件存在 则写入的数据覆盖原本内容

用readFile实现复制图片

var fs = require('fs');
fs.readFile('./a.jpg', 'base64', function(err,data){
    fs.writeFile('./b.jpg',data.toString(),'base64',function(err){
        if(err){
            console.log('写文件操作失败')
        }else {
            console.log('写文件操作成功')
        }
    })
});
  • appendFile appendFileSync fs.appendFile(path, data, options, callback)
var fs = require('fs');
fs.appendFile('./message.txt', '这是追加的数据', 'utf-8', function(err){
    if(err){
        console.log('追加文件失败')
    }else {
        console.log('追加文件成功')
    }
});
  • open openSync fs.open(path, flags[, mode], callback)
path - 文件的路径。
flags - 文件打开的行为。
mode - 设置文件模式(权限),文件创建默认权限为 0666(可读,可写)。
callback - 回调函数,带有两个参数如:callback(err, fd)。

flags 参数
r 以读取模式打开文件
r+ 以读写模式打开文件
rs 以同步的方式读取文件
rs+ 以同步的方式读写文件

var fs = require('fs')
fs.open('message.txt', 'r+', function (err, fd) {
    if (err) return err;
    console.log(fd);
    console.log('文件打开成功');
});
image.png
  • read fs.read(fd, buffer, offset, length, position, callback)
    fd - 通过 fs.open() 方法返回的文件描述符。
    buffer - 数据写入的缓冲区。
    offset - 缓冲区写入的写入偏移量。
    length - 要从文件中读取的字节数。
    position - 文件读取的起始位置,如果 position 的值为 null,则会从当前文件指针的位置读取。
    callback - 回调函数,有三个参数err, bytesRead, buffer,err 为错误信息, bytesRead 表示读取的字节数,buffer 为缓冲区对象。
var fs = require("fs");
var buf = new Buffer(1024);

console.log("准备打开已存在的文件!");
fs.open('message.txt', 'r+', function(err, fd) {
    if (err) {
        return console.error(err);
    }
    console.log("文件打开成功!");
    console.log("准备读取文件:");
    fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
        if (err){
            console.log(err);
        }
        console.log(bytes + "  字节被读取");

        // 仅输出读取的字节
        if(bytes > 0){
            console.log(buf.slice(0, bytes).toString());
        }
    });
});
node.js 学习笔记(2)_第4张图片
image.png
  • write writeSync fs.write(fd,buffer,offset,length,position,function(err,written,buffer){})
var fs = require('fs')
var buf = new Buffer('心心心输送机');
fs.open('./message.txt','w', function(err,fd){
    fs.write(fd,buf,3,9,0,function(err,written,buffer){
        if(err){
            console.log('文件写入失败')
        }else{
            console.log('写入文件成功')
        }
    })
})

"心心输" 三个字被写入

在写入文件后,我们经常要关闭文件 fs.close(fd,[callback])

  • mkdir mkdirSync 创建目录 fs.mkdir(path[, mode], callback)
var fs = require("fs");

console.log("创建目录 test");
fs.mkdir("test",function(err){
    if (err) {
        return console.error(err);
    }
    console.log("目录创建成功。");
});
  • readdir readdirSync 读取目录 fs.readdir(path,function(err,files){})
var fs = require('fs')
fs.readdir('./',function(err,files){
    if(err){
        console.log('读取目录失败')
    }else{
        console.log(files)
    }
})
node.js 学习笔记(2)_第5张图片
image.png
image.png
  • stat 获取文件信息 fs.stat(path, callback)
var fs = require('fs');
fs.stat('message.txt',function(err,stats){
    if(err){
        return err;
    }
    console.log(stats);
    console.log("读取文件信息成功");
    //检测文件类型
    console.log('是否为文件(isFile) ? ' + stats.isFile());
    console.log('是否为目录(isDirectory) ? ' + stats.isDirectory());
});
node.js 学习笔记(2)_第6张图片
image.png
  • exists 判断文件目录是否存在 fs.exists(path, callback)
var fs = require('fs');
fs.exists('./test', function (exists) {
    if (exists) {
        console.log('路径存在');
    }
});

太累了 不写了 具体需要的api自己查吧 等用到时再更新

个人学习 node 目录地址

你可能感兴趣的:(node.js 学习笔记(2))