Node文件操作简单api

文件读取和写入

没有声明encoding,所以返回的是buffer(二进制数据), 声明了encoding,所以返回的是普通字符串

同步读取

  • 无声明encoding
 fs.readFileSync(filename);

  • 声明了encoding
 fs.readFileSync(filename,{encoding: 'utf-8'})
  • 异常处理

// 文件读取异常处理:通过try、catch

try{
    var errStr = fs.readFileSync('noneExist.txt');
}catch(err){
    console.log(err.message);  // 输出 ENOENT, no such file or directory 'noneExist.txt'
}

文件异步读取

  • 无声明encoding
fs.readFile('test.txt', function(err, data){
    if(err){
        console.log('文件读取失败');
    }else{
        console.log(data);  // 输出 <Buffer 68 65 6c 6c 6f 0a>
    }
});
  • 声明了encoding
fs.readFile('test.txt', {encoding: 'utf-8'}, function(err, data){
    if(err){
        console.log('文件读取失败');
    }else{
        console.log(data);  // 输出 hello
    }
});
  • 异常处理
fs.readFile('noneExist.txt', {encoding: 'utf-8'}, function(err, data){
    if(err){
        console.log('文件读取失败');  // 输出 文件读取失败
    }else{
        console.log(data);
    }
});

文件写入函数

  1. 同步 fs.writeFileSync
  2. 异步 fs.writeFile

同步写入

 fs.writeFileSync(filename, data, [options])

data 

要往文件里写的内容,可以是字符串,也可以是二进制数据。当为二进制数据时候,options.encoding 会被忽略
 * {Object}    options
 * {String} options.encoding 编码,默认是utf8
 * {Number} options.mode=438 模式
 * {String} options.flag=w 写文件的模式

  • 覆盖写入
fs.writeFile('1.txt', '文件已存在,则覆盖内容 -- '+(new Date()-0));

  • 往已经存在的文件里追加内容
fs.writeFile('1.txt', '\n文件已存在,并追加内容 -- '+(new Date()-0), {
    flag: 'a'
});

异步写入

fs.writeFile('1.txt', '\n文件已存在,并追加内容 -- '+(new Date()-0), {
    flag: 'a'
}, function(err){
    if(err) throw err;
    console.log('exists.txt已存在,内容被覆盖!');
});

文件信息

  • 同步
var fs = require('fs');
var statInfo = fs.statSync('node.md');
console.log(statInfo);
  • 异步

fs.stat(path, [callback(err, stats)])

var fs = require('fs');
fs.stat('content.txt', function(err, stats){
 if(err){
  throw err;
 }else{
  console.log(stats);
 }
})
{ dev: 681374970,
  mode: 33206,
  nlink: 1,
  uid: 0,
  gid: 0,
  rdev: 0,
  blksize: undefined,
  ino: 1125899908220272,
  size: 2499,
  blocks: undefined,
  atime: 2017-10-25T03:46:03.093Z,
  mtime: 2017-10-25T04:19:43.198Z,
  ctime: 2017-10-25T04:19:43.198Z,
  birthtime: 2017-10-25T03:46:03.093Z }
posted @   金于虎  阅读(168)  评论(0编辑  收藏  举报
编辑推荐:
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
阅读排行:
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· Winform-耗时操作导致界面渲染滞后
· Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能
· 语音处理 开源项目 EchoSharp
· drools 规则引擎和 solon-flow 哪个好?solon-flow 简明教程
点击右上角即可分享
微信分享提示