1.简介
Node.js内置的fs
模块就是文件系统模块,负责读写文件, fs
模块同时提供了异步和同步的方法。
2. 使用示例
'use strict';
let fs = require('fs');
/**
* @description 异步读取文件
*/
function readFile (fileName, encode = 'utf-8') {
fs.readFile(fileName, encode, function(err, data) {
if (err)
console.log(err)
else
console.log(data)
})
}
/**
* @description 异步写文件
*/
function writeFile(fileName, str) {
fs.writeFile(fileName, str, function(err) {
if (err)
console.log(err)
else
console.log('写文件操作成功!')
})
}
/**
* @description 同步读文件
*/
function readFileAsync (fileName, encode = 'utf-8') {
try {
let data = fs.readFileSync(fileName, encode)
console.log(data);
} catch (err) {
console.log(err);
}
}
/**
* @description 同步写文件
*/
function writeFileAsync(fileName, str, encode = 'utf-8') {
try {
fs.writeFileSync(fileName, str, encode)
console.log('同步写文件操作成功!')
} catch (err) {
console.log(err);
}
}
/**
* @description 二进制读取文件
*/
function readFileBuffer(fileName) {
fs.readFile(fileName, function (err, data) {
if (err) {
console.log(err);
} else {
console.log(data);
console.log(data.length + ' bytes');
}
});
//Buffer对象可以和String作转换,例如,把一个Buffer对象转换成String:
//Buffer -> String
//let text = data.toString('utf-8');
//String->Buffer:
//let buf = Buffer.from(text, 'utf-8');
}
/**
* @description 读取文件信息
*/
function fileInfo (fileName) {
// stat()也有一个对应的同步函数statSync()
fs.stat(fileName, function (err, stat) {
if (err) {
console.log(err);
} else {
// 是否是文件:
console.log('isFile: ' + stat.isFile());
// 是否是目录:
console.log('isDirectory:'+ stat.isDirectory());
if (stat.isFile()) {
// 文件大小:
console.log('size: ' + stat.size);
// 创建时间, Date对象:
console.log('birth time: ' + stat.birthtime);
// 修改时间, Date对象:
console.log('modified time: ' + stat.mtime);
}
}
})
}
module.exports = {
read: readFile,
write: writeFile,
readAsync: readFileAsync,
writeAysnc: writeFileAsync,
fileInfo: fileInfo,
readFileBuffer: readFileBuffer
}