fs.watch()方法是fs模塊的內置應用程序編程接口,用於連續監視給定文件或目錄中的更改。它返回一個fs.FSWatcher對象,該對象可用於跟蹤文件中的更改。
它具有一個可選的偵聽器作為第三個參數,可用於獲取發生的更改。該偵聽器有兩個參數,一個是修改的文件或目錄的名稱,另一個是修改的類型。觀看文件時,如果文件消失並重新出現,則發出‘rename’事件,如果文件內容被修改,則發出‘change’事件。
注意:此方法不可靠,並且每次修改都會在偵聽器中顯示多個事件。
用法:
fs.watch( filename[, options][, listener] )
參數:此方法接受上述和以下所述的三個參數:
- filename:它是一個字符串,Buffer或URL,表示要監視的文件或目錄的名稱。
- options:它是可用於修改方法行為的字符串或對象。它是一個可選參數。它具有以下參數:
- persistent:它是一個布爾值,用於指定隻要正在監視文件,該過程是否應繼續。默認值是true。
- recursive:它是一個布爾值,用於指定是否應監視給定目錄的所有子目錄。默認值為false。
- encoding:它是一個字符串,它指定用於傳遞給偵聽器的文件名的字符編碼。
- listener:它是在訪問或修改文件時調用的函數。它是一個可選參數。
- eventType:它是一個字符串,它指定文件進行的修改的類型。
- filename:它是一個字符串或Buffer,它指定觸發事件的文件名。
返回值:成功調用該函數後,它將返回一個fs.StatWatcher對象。
以下示例說明了Node.js中的fs.watch()方法:
範例1:本示例顯示了文件上watch()方法的用法。
javascript
// Node.js program to demonstrate the
// fs.watch() method
// Import the filesystem module
const fs = require('fs');
fs.watch("example_file.txt", (eventType, filename) => {
console.log("\nThe file", filename, "was modified!");
console.log("The type of change was:", eventType);
});
// Renaming the file to a new name
setTimeout(
() => fs.renameSync("example_file.txt", "new_file.txt"),
1000
);
// Renaming the file back to its old name
setTimeout(
() => fs.renameSync("new_file.txt", "example_file.txt"),
2000
);
// Changing the contents of the file
setTimeout(
() => fs.writeFileSync("example_file.txt",
"The file is modified"), 3000
);
輸出:請注意,此方法不可靠,並且每次修改都會顯示多個事件。
The file example_file.txt was modified! The type of change was:rename The file example_file.txt was modified! The type of change was:rename The file example_file.txt was modified! The type of change was:change
範例2:本示例顯示目錄上watch()方法的用法。
javascript
// Node.js program to demonstrate the
// fs.watch() method
// Import the filesystem module
const fs = require('fs');
fs.watch("ex_dir", (eventType, filename) => {
console.log("\nThe file", filename, "was modified!");
console.log("The type of change was:", eventType);
});
// Changing the contents of a file
setTimeout(
() => fs.writeFileSync("ex_dir/ex1.txt",
"The file is modified"), 1000
);
// Renaming a file to a new name
setTimeout(
() => fs.renameSync("ex_dir/ex2.txt",
"ex_dir/new_ex2.txt"), 2000
);
輸出:請注意,此方法不可靠,並且每次修改都會顯示多個事件。
The file ex1.txt was modified! The type of change was:change The file ex2.txt was modified! The type of change was:rename The file new_ex2.txt was modified! The type of change was:rename
參考:https://nodejs.org/api/fs.html#fs_fs_watch_filename_options_listener
相關用法
- Node.js console.timeLog()用法及代碼示例
- Node.js GM segment()用法及代碼示例
- Node.js GM roll()用法及代碼示例
- Node.js GM orderedDither()用法及代碼示例
- Node.js GM drawArc()用法及代碼示例
- Node.js GM shave()用法及代碼示例
- Node.js GM drawBezier()用法及代碼示例
- Node.js GM drawPolyline()用法及代碼示例
- Node.js GM resize()用法及代碼示例
- Node.js GM raise()用法及代碼示例
- Node.js GM paint()用法及代碼示例
- Node.js GM emboss()用法及代碼示例
- Node.js GM quality()用法及代碼示例
- Node.js GM solarize()用法及代碼示例
- Node.js GM motionBlur()用法及代碼示例
注:本文由純淨天空篩選整理自sayantanm19大神的英文原創作品 Node.js fs.watch() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。