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', '
文件已存在,并追加内容 -- '+(new Date()-0), {
    flag: 'a'
});

异步写入

fs.writeFile('1.txt', '
文件已存在,并追加内容 -- '+(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 }
原文地址:https://www.cnblogs.com/oneboi/p/7728286.html