Node.js 文件系统

Node.js 文件封装在 fs 模块,它提供了文件的读取、写入、更名、删除、便利目录、链接等系统操作。fs 模块提供了异步和同步两个版本。

异步读取文件

fs.readFile(path, [encoding], function(error,data){})

let fs = require('fs');
fs.readFile(__dirname + '/test.txt', function(error, data){
  if(error){
    console.log(error);
  }else{
    let dataStr = data.toString();
    console.log(data);
  }
})

异步写入文件

fs.writeFile(path, data, [encoding], function(error,data){})

writeFile 会覆盖写入新的数据

let fs = require('fs');
let data = 'Hello world';
fs.writeFile(__dirname + '/test.txt', data, function(error){
  if(error){
    console.log(error);
  }else{
    console.log('write success');
  }
})

异步追加写入文件

fs.appendFile(path , data, [encoding], callback);

和 writeFile 不同,appendFile 写入内容不会覆盖文件原有的内容,会在末尾处添加。

同步读取文件

fs.readFileSync(path, [encoding])

let fs = require('fs');
let data = fs.readFileSync(__dirname + '/test.txt');
console.log(data);

同步写入文件

fs.writeFileSync(path, data, [encoding])

let fs = require('fs');
let data = 'Hello world';
fs.writeFileSync( __dirname + '/test.txt', data);

同步追加写入

fs.appendFileSync(path, data, [encoding])

let fs = require('fs');
let data = 'Hello world';
fs.appendFileSync( __dirname + '/test.txt', data);

查看文件信息

通过同步或者异步获取到文件信息的 stats 类,stats 类里面有很多方法包含这个路径是否文件,是否目录,是否块设备,是否字符设备等等。同时 stats 类里面还有一些属性,比如 size 文件占用的存储空间 及 创建时间、修改时间等等。详情可查阅 API 文档 http://nodejs.cn/api/fs.html#fs_class_fs_stats

fs.stat(path, function(error, stats))

fs.statSync(path)

stats.isDirectory()

stats.isFile()

let fs = require('fs');
let stats = fs.statSync(__dirname);
console.log(stats.isFile())
console.log(stats.isDirectory());
console.log(stats);

更改文件权限

fs.chomd(path, data, callback)

fs.chomdSync(path, data)

更改文件所属的用户和用户组

fs.chown(path, uid, gid, callback)

fs.chownSync(path, uid, gid)

判断文件是否存在

fs.exitsSync(path)

let bool = fs.exitsSync(__filename);

创建文件链接

fs.link(path, newPath, callback)

fs.linkSync(path, newPath)

fs.linkSync(__dirname + '/test.txt', __dirname + '/test_2.txt');

创建出链接文件 text_2.txt ,当修改 text_2.txt 时,原文件 test.txt 也会发生变化。

删除文件

fs.unlink(path, callback)

fs.unlinkSync(path)

fs.unlink(__dirname + '/test_2.txt');

创建文件夹

mode 为权限,可选

fs.mkdir(path, [mode], callback)

fs.mkdirSync(path, [mode])

fs.mkdirSync(__dirname + '/testdir');

创建临时文件夹

临时文件夹会随着电脑的关闭被删除

fs.mkdtemp(path, [encoding], callback)

fs.mkdtempSync(path, [encoding])

删除文件夹

fs.rmdir(path, callback)

fs.rmdirSync(path)