以下是fs模塊常用方法,更多具體內容請參考官網:http://nodejs.cn/api/fs.html
// fs是node的核心模塊,無需安裝
const fs = require('fs');
fs.access(path[, mode], callback)
/**
* 測試用戶對 path 指定的文件或目錄的權限。
* @param {String|Buffer} path
* @param {Integer} mode 默認值: fs.constants.F_OK
* @param {Function} callback
*/
const file = 'package.json';
// 檢查當前目錄中是否存在該文件。
fs.access(file, fs.constants.F_OK, (err) => {
console.log(`${file} ${err ? '不存在' : '存在'}`);
});
// 檢查文件是否可讀。
fs.access(file, fs.constants.R_OK, (err) => {
console.log(`${file} ${err ? '不可讀' : '可讀'}`);
});
// 檢查文件是否可寫。
fs.access(file, fs.constants.W_OK, (err) => {
console.log(`${file} ${err ? '不可寫' : '可寫'}`);
});
// 檢查當前目錄中是否存在該文件,以及該文件是否可寫。
fs.access(file, fs.constants.F_OK | fs.constants.W_OK, (err) => {
if (err) {
console.error(
`${file} ${err.code === 'ENOENT' ? '不存在' : '只可讀'}`);
} else {
console.log(`${file} 存在,且它是可寫的`);
}
});
不建議在調用 fs.open()、 fs.readFile() 或 fs.writeFile() 之前使用 fs.access() 檢查文件的可訪問性。 這樣做會引入競態條件,因爲其他進程可能會在兩個調用之間更改文件的狀態。 相反,應該直接打開、讀取或寫入文件,如果文件無法訪問則處理引發的錯誤。
fs.open(path, flags[, mode], callback)
/**
* 異步地打開文件。
* @param {String|Buffer} path
* @param {String|Number} flags 參閱支持的文件系統標誌。
* @param {integer} mode 0o666(可讀寫)。
* @param {Function} callback
* err
* fd
*/
fs.readFile(path[, options], callback)
/**
* 異步地讀取文件的全部內容。
* @param {String|Buffer} path 文件名或文件描述符。
* @param {Object|String} options
* encoding 默認值: null
* flag 參閱支持的文件系統標誌。默認值: 'r'
* @param {Function} callback
* err
* data 文件的內容
*/
fs.readFile('/etc/passwd', (err, data) => {
if (err) throw err;
console.log(data);
});
fs.writeFile(file, data[, options], callback)
/**
* 異步地將數據寫入到一個文件,如果文件已存在則覆蓋該文件。
* @param {String|Buffer|URL|integer} file 文件名或文件描述符。
* @param {String|Buffer|TypedArray|DataView} data
* @param {Object|String} options
* encoding 默認值: null
* mode 默認值: 0o666
* flag 參閱支持的文件系統標誌。默認值: 'r'
* @param {Function} callback
* err
*/
const data = new Uint8Array(Buffer.from('Node.js中文網'));
fs.writeFile('文件.txt', data, (err) => {
if (err) throw err;
console.log('文件已被保存');
});
fs.appendFile(path, data[, options], callback)
/**
* 異步地將數據追加到文件,如果文件尚不存在則創建該文件。 data 可以是字符串或 Buffer
* @param {String|Buffer} path 文件名或文件描述符
* @param {String|Buffer} data
* @param {Object|String} options
* encoding 默認值: 'utf8'
* mode 默認值: 0o666
* flag 參閱支持的文件系統標誌。默認值: 'a'
* @param {Function} callback
*/
fs.appendFile('message.txt', '追加的數據', (err) => {
if (err) throw err;
console.log('數據已追加到文件');
});
// 如果 options 是字符串,則它指定字符編碼:
fs.appendFile('message.txt', '追加的數據', 'utf8', callback);
// path 可以指定爲已打開用於追加(使用 fs.open() 或 fs.openSync())的數字型文件描述符。 文件描述符不會自動關閉。
fs.open('message.txt', 'a', (err, fd) => {
if (err) throw err;
fs.appendFile(fd, '追加的數據', 'utf8', (err) => {
fs.close(fd, (err) => {
if (err) throw err;
});
if (err) throw err;
});
});
fs.mkdir(path[, options], callback)
/**
* 異步地創建目錄。 除了可能的異常,完成回調沒有其他參數。
* @param {String|Buffer} path
* @param {Object|integer} options
* recursive 是否應創建父文件夾 默認值: false
* mode 默認值: 0o777
* @param {Function} callback
*/
// 創建 /tmp/a/apple 目錄,無論是否存在 /tmp 和 /tmp/a 目錄。
fs.mkdir('/tmp/a/apple', { recursive: true }, (err) => {
if (err) throw err;
});
.
系列文章
【node使用】發佈一個自己的npm包
【node使用】搭建一個web服務器
【node使用】package.json詳解以及package-lock.json的作用
【node使用】path模塊
【node使用】glob匹配模式
【node使用】fs模塊
【node使用】實現console輸出不同顏色