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
- 回调函数