Node.js -- File System

 fs 同时支持sync & async

  • e.g. readdirSync vs. readdir
  • 异步方法性能更高,速度更快,而且没有阻塞

获取文件列表

fs.readdir(dir_name, function(err,files){})

  • 目录名
  • 回调函数
    • error对象
    • files数组
fs.readdir('.', function(err,files){
    // 读取当前目录文件列表并打印
    console.log(files);
})

获取文件元数据

fs.stat(file_path, function(err,stats){})

  • 文件路径
  • 回调函数
    • error对象
    • 元数据对象 (fs.stats类型)

调取元数据并判断类型

fs.stat('./'+fileanme,function(err,stat){
            
            if(stat.isDirectory()){
                // 做点什么
            } else{
                // 做点什么
            }
                

fs.stats methods

打开文件

fs.open(file_path, flag, function(err,fd){})

  • 文件路径
  • 打开模式
  • 回调函数
var fs = require("fs");

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

读文件

fs.readFile(file_path, 'encoding', function(err,data){})

  • 文件路径
  • 编码类型
  • 回调函数
    • error对象
    • 文件内容
fs.readFile(__dirname+'/'+filename,'utf-8',function(err, d){
                console.log(d);
            })

写文件

fs.writeFile(file_path, data, [options], function(err) {...})

  • 文件路径
  • 需要写入的内容:string or buffer
  • 可选参数对象:{encoding, mode, flag}
  • 回调函数
    • error对象
var fs = require("fs");
fs.writeFile('input.txt', '我是通过fs.writeFile 写入文件的内容',  function(err) {...});

关闭文件

fs.open('input.txt', 'r+', function(err, fd) {
    //...
    fs.close(fd, function(err){
         if (err){
            console.log(err);
         } 
         console.log("文件关闭成功");
      });
});

删除文件

fs.unlink(file_path, function(){...})
  • 文件路径
  • 回调函数
    • 无参数

创建目录

fs.mkdir(path[, options], function(){...})
  • 文件路径
  • 可选options
    • recursive - 是否以递归的方式创建目录,默认为 false
    • mode - 设置目录权限,默认为 0777。
  • 回调函数
    • 无参数

删除目录

fs.rmdir(path, function(){...})

为文件创建流

  • 传统readFile只有在所有文件内容全部读完,加载到ram中之后,才会调用回调函数
  • Stream分chunk把内容加载到ram,每个chunk都会触发回调函数

除了读取,写入也可以用stream

监视文件修改

  • fs.watch -- 监视整个目录
  • fs.watchFile -- 监视某个文件
    • 文件path
    • 回调函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值