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);
}
});
文件写入函数
- 同步 fs.writeFileSync
- 异步 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 }