NodeJS学习笔记(六)

这篇博客详细介绍了NodeJS中的文件系统操作,包括异步读取的重要性、打开文件的各种标志、获取文件信息的方法、写入文件的步骤、从文件读取到缓冲区的流程、删除文件的API以及创建和读取目录的函数。重点强调了异步操作的性能优势和不同文件模式的使用场景。

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

文件系统

var fs = require('fs');

//input.txt内容ABC

//异步读取
fs.readFile('input.txt',function(err,data){  //回调函数,有点奇葩,data在第二个参数
    if(err){
        return console.error(err);
    }
    console.log('异步读取' + data.toString());
});

//同步读取
var data = fs.readFileSync('input.txt'); //同步的时侯fs.readFileSync(input.txt).toString()方法调出data里面的数据
console.log('同步读取' + data.toString());

console.log('程序执行完毕')

//结果:
同步读取: ABC

程序执行完毕。

异步读取: ABC

推荐异步读取,性能更高,速度更快,没有阻塞

打开文件

fs.open(path,flags,mode,callback)

path:文件路径

flags:解读:

r:读取模式,文件不存在抛出异常

r+:读写模式,文件不存在抛出异常

rs:同步读取文件

fs+:同步读写文件

w:写入模式打开文件,文件不存在则创建(真任性)

wx:与x同,但是如果文件存在,则会写入失败

w+:读写打开文件,文件不催在则创建

wx+:类似w+,文件存在,则读写失败

a:追加模式,文件不存在则创建

ax:如果文件存在,文件追加失败

a+:以读取加追加模式打开文件,文件不在则创建

ax+:如果文件存在则追加失败

mode:设置文件模式(权限),文件创建默认权限为0666(可读可写)

var fs = require('fs');

//异步打开文件
console.log('准备打开文件!');
fs.open('input.txt','r+',function(err,fd){
    if(err){
        return console.error(err);
    }
    console.log('文件打开成功!');
});

获取文件信息

//fs.stat(path,callback)
var fs = require('fs');

fs.stas('example.js',function(err,stas){
    console.log(stats.isFile()); //true
    console.log(stas); //{ dev: 16777220,
  mode: 33188,
  nlink: 1,
  uid: 501,
  gid: 20,
  rdev: 0,
  blksize: 4096,
  ino: 40333161,
  size: 61,
  blocks: 8,
  atime: Mon Sep 07 2015 17:43:55 GMT+0800 (CST),
  mtime: Mon Sep 07 2015 17:22:35 GMT+0800 (CST),
  ctime: Mon Sep 07 2015 17:22:35 GMT+0800 (CST) }
})

还有很多类似isFile()的函数,可以查查文档

写入文件

fs.writeFile(file,data,option,callback)

data:可以是String或者Buffer对象

option:是一个对象,包括{encoding,mode,flag},默认encoding为utf8,模式0666,flag为“w”

var fs = require('fs');

console.log('准备写入');

fs.writeFile('input.txt','你好吗',function(err){
    if(err){
        return console.error(err);
    }
    console.log('数据写入成功');

    console.log('尝试读入');

    fs.readFile('input.txt',function(err,data){
        if(err)
            return console.error(err);
        console.log('异步读取数据' + data.toString());
    });
});

从文件中调取文件到缓冲区

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

fd:通过fs.open()方法返回的文件描述符,意味着read必定open,让read知道自己在读什么文件

buffer:数据写入的缓冲区

offset:缓冲区写入的写入的偏移量

position:文件起始位置,若null,则从当前文件指针的位置读取

callback:回调函数,err:错误信息,bytesRead:读取的字节数,buffer:缓冲区对象

//input.txt,内容:你好

var fs = require('fs')'
var buf = new Buffer.alloc(1024);

console.log('准备打开已存在的文件') ;
fs.open('input.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());
    }

    //顺便关闭文件
    fs.close(fd,function(err){
        if(err){
            console.log(err);
        }
        console.log('文件关闭成功')
    });
});

});


删除文件

var fs = require('fs');
console.log('准备删除文件');

fs.unlink('input.txt',function(err){
    if(err){
        return console.error(err);
    }
    console.log('文件删除成功')

})

创建目录

var fs = require('fs');

fs.mkdir('/tmp/test/',function(err){
    if(err)
        return console.error(err);
    console.log('目录创建成功');
})

//fs.mkdir(path,mode,callback)  //mode默认不填为0777

读取目录

var fs = require('fs');

fs.readdir('/tmp/',function(err,files){
    if(err){
        return console.error(err);
    }
    files.forEach(function(file){
       console.log(file) 
    });

})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值