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
}