Node.js-文件系统之文件字节操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012054869/article/details/82110818

5. 文件字节操作

(1)打开文件

  • Fs.open()
  • Fs.openSync()

文件打开模式:

    'r' - 以读取模式打开文件。如果文件不存在则发生异常。

    'r+' - 以读写模式打开文件。如果文件不存在则发生异常。

    'w' - 以写入模式打开文件。文件会被创建(如果文件不存在)或截断(如果文件存在)。

    'wx' - 类似 'w',但如果 path 存在,则失败。

    'w+' - 以读写模式打开文件。文件会被创建(如果文件不存在)或截断(如果文件存在)。

    'wx+' - 类似 'w+',但如果 path 存在,则失败。

    'a' - 以追加模式打开文件。如果文件不存在,则会被创建。

    'ax' - 类似于 'a',但如果 path 存在,则失败。

    'a+' - 以读取和追加模式打开文件。如果文件不存在,则会被创建。

    'ax+' - 类似于 'a+',但如果 path 存在,则失败。

 

(2)读取

  • Fs.read()

fs.read(fd, buffer, offset, length, position, callback)

fd;指定的文件中读取数据

buffer:数据被写到buffer中,

offset:buffer中哪里开始写入,当offset为1时,length不能小于99

length:整数,指定读取的字节数

option,指定从文件中位置读取

callback,三个参数,function(err, bytesRead, buffer)

  • Fs.readSync()

例子:读取指定字节数

// 导入文件系统
const fs = require('fs');

//打开文件
fs.open('file/1.txt', 'r', function (err, fd) {
    if (err) throw err;
    // 读取文件
    //首先创建buffer,文件读取到buffer中
    let buf = Buffer.alloc(100);
    fs.read(fd, buf, 1, 99, 0, function (err, bytesRead, buffer) {
        console.log('读取了' + bytesRead + '字节');
        console.log(buffer);
        console.log(buffer.length);
        console.log(buffer.toString());
    })
});

例子二:读取文档所有的内容

// 导入文件系统
const fs = require('fs');

//打开文件读取
fs.open('file/1.txt', 'r', function (err, fd) {
    if (err) throw err;
    // 读取文件
    //首先创建buffer,文件读取到buffer中
    let size = fs.statSync('file/1.txt').size;//计算文件长度
    let buf = Buffer.alloc(size);
    fs.read(fd, buf, 0, size, 0, function (err, bytesRead, buffer) {
        if (err) throw err;
        console.log('读取了' + bytesRead + '个字节');
        console.log(buffer);
        console.log(buffer.length);
        console.log(buffer.toString());
    })
});

(3)写入

  • Fs.write()
  • Fs.writeSync()

例子:写入buffer

//打开文件,并写入
// 'a'不停的写入,'w'只写入一次,'w+'把原来的内容全部删除再重新写入
  fs.open('file/2.txt', 'a', function (err, fd) {
    if (err) throw err;
    //写入buffer
    let buf = Buffer.from('中华人民共和国');
    // 一
    fs.write(fd,buf,3,buf.length-3,0,function (err,bytesRead,buffer) {
        if(err) throw err;
        console.log('写入了'+bytesRead+'个字节');
        console.log(bytesRead);
        console.log('buffer的内容'+buffer.toString());
    })
 })

例子二:写入字符串

//打开文件,并写入
// 'a'不停的写入,'w'只写入一次,'w+'把原来的内容全部删除再重新写入
 fs.open('file/2.txt', 'a', function (err, fd) {
    if (err) throw err;
    //写入buffer
    let buf = Buffer.from('中华人民共和国');
    // 二,直接写入字符串string
    fs.write(fd, '锄禾日当午', 0, function (err, bytesRead, string) {
        if (err) throw err;
        console.log('写入了' + bytesRead + '个字节');
        console.log(string);
    })
})

(4)截断

  • Fs.ftruncate()
  • Fs.ftruncateSync()

例子:

// 打开并截断字符串,使用'a+'
fs.open('file/3.txt', 'r+', function (err, fd) {
    if (err) throw err;
    fs.ftruncate(fd, 6, function (err) {
        if (err) throw err;
        console.log('文件截断成功')
    })
})

(5)关闭

  • Fs.close()
  • Fs.closeSync()

例子:

// 追加内容
fs.open('file/4.txt', 'a', function (err, fd) {
    if (err) throw err;
    fs.appendFile(fd, '\n日照香炉生紫烟\n', function (err) {
        if (err) throw err;
        console.log('追加成功');
        fs.close(fd, function (err) {
            if (err) throw err;
        })
    })
})

 

猜你喜欢

转载自blog.csdn.net/u012054869/article/details/82110818