NodeJS基礎入門-fs檔案系統
檔案I/O是由簡單封裝的標準POSIX函式提供。通過require('fs') 使用該模組。所有的方法都有非同步和同步的形式。
非同步方法的最後一個引數都是一個回撥函式。傳給回撥函式的引數取決於具體方法,但回撥函式的第一個引數都會保留給異常。如果操作成功完成,則第一個引數回事null或undefined。
const fs = require('fs');
// 編碼為utf8
fs.readFile('./readme.txt', 'utf8',(err,data) => {
if (err) throw err;
console.log(data);
});
檔案不存在:
/home/dex/web/nodejs/readfile.js:4
if (err) throw err;
^
Error: ENOENT: no such file or directory, open './readme'
檔案存在:
This is a readme file
同步操作:
const fs = require('fs');
// 同步操作
const data = fs.readFileSync('./readme.txt', 'utf8');
console.log(data);
This is a readme file
同步比非同步先執行,高併發的時候同步可能擋住其他使用者的訪問,web中推薦使用非同步操作,。
如何寫檔案
const fs = require('fs'); fs.writeFile('./text','Hello World!',{ encoding: 'utf8' },err => { if(err) throw err; console.log('Done!'); })
另外可以換成一個Buffer來寫:
const fs = require('fs');
const content = Buffer.from('Hello WORLD!');
fs.writeFile('./text', content, err => {
console.log('Done!');
})
~
檢視檔案的詳細資訊
const fs = require('fs'); fs.stat('./ext', (err,stats) => { //if (err) throw err; //線上的話可以通過記日誌 if (err) { console.log('檔案不存在') return; } console.log(stats.isFile()); console.log(stats.isDirectory()); console.log(stats) });
true
false
Stats {
dev: 2051,
mode: 33188,
nlink: 1,
uid: 1000,
gid: 1000,
rdev: 0,
blksize: 4096,
ino: 25168511,
size: 12,
blocks: 8,
atimeMs: 1544415275747.7136,
mtimeMs: 1544415267842.6614,
ctimeMs: 1544415267842.6614,
birthtimeMs: 1544415267842.6614,
atime: 2018-12-10T04:14:35.748Z,
mtime: 2018-12-10T04:14:27.843Z,
ctime: 2018-12-10T04:14:27.843Z,
birthtime: 2018-12-10T04:14:27.843Z }
檔案重新命名
const fs = require('fs');
fs.rename('./text', 'test.love', err => {
if(err) throw err;
});
檔案刪除
const fs = require('fs');
fs.unlink('./test.love', err => {});
~
資料夾相關操作
讀檔案目錄:
const fs = require('fs');
fs.readdir('./',(err,files) => {
if (err) throw err;
console.log(files);
});
建立資料夾
const fs = require('fs');
fs.mkdir('test', err => {});
刪除資料夾
const fs = require('fs');
fs.rmdir('test', err => {});
監視檔案的變化
const fs = require('fs');
fs.watch('./', {
recursive: true
}, (eventType, filename) => {
console.log(eventType,filename);
});
change .readfile.js.swp
rename ttt
*監視可用於本地構建程式碼