fs.watchFile()方法用於連續監視給定文件上的更改。它具有一個回調監聽器,每次訪問文件時都會調用該監聽器。它具有一個可選的options參數,該參數可用於指定屬性,例如必須輪詢文件的間隔時間以及隻要監視文件就可以繼續進行。
偵聽器有兩個參數,即當前stat對象和上一個stat對象。這可用於比較對文件的更改。修改後的文件訪問時間可以從fs.Stat對象的mtime屬性中找到。
在觀看文件時,如果文件消失並重新出現,則消失回調的previousStatic將與外觀回調的previousStat相同。重命名文件然後再次重命名回其原始名稱時,會發生這種情況。當文件被刪除然後再恢複時,也會發生這種情況。
用法:
fs.watchFile(filename[, options], listener)
參數:此方法接受上述和以下所述的三個參數:
- filename:它是一個字符串,緩衝區或URL,表示要監視的文件的文件名。
- options:它是一個對象,可用於修改方法的行為。它是一個可選參數。它具有以下參數:
- bigint:它是一個布爾值,用於將fs.Stat對象的數值指定為BigInt值。默認值為false。
- persistent:它是一個布爾值,用於指定隻要正在監視文件,該過程是否應該繼續。默認值是true。
- interval:它是整數,指定每次輪詢到目標之間的時間間隔。以毫秒為單位指定。默認值為5007。
- listener:訪問或修改文件時將調用該函數。
- current:這是一個fs.Stats對象,它表示文件被訪問或修改後的當前狀態。
- previous:這是一個fs.Stats對象,它表示文件被訪問或修改之前的先前狀態。
返回值:成功調用該函數後,它將返回一個fs.StatWatcher對象。
以下示例說明了Node.js中的fs.watchFile()方法:示例1:本示例說明了watchFile()方法及其參數的用法。
// Node.js program to demonstrate
// the fs.watchFile() method
// Import the filesystem module
const fs = require('fs');
fs.watchFile(
// The name of the file to watch
"example_file.txt",
// The options parameter is used to
//modify the behaviour of the method
{
// Specify the use of big integers
// in the Stats object
bigint:false,
// Specify if the process should
// continue as long as file is
// watched
persistent:true,
// Specify the interval between
// each poll the file
interval:4000,
},
(curr, prev) => {
console.log("\nThe file was edited");
// Show the time when the file was modified
console.log("Previous Modified Time", prev.mtime);
console.log("Current Modified Time", curr.mtime);
console.log(
"The contents of the current file are:",
fs.readFileSync("example_file.txt", "utf8")
);
}
);
// Make Changes to the file for the first time
fs.writeFileSync("example_file.txt",
"File Contents are Edited");
// Make Changes to the file for the second time
setTimeout(
() => fs.writeFileSync("example_file.txt",
"File Contents are Edited Again"),
5000
);
輸出:
The file was edited Previous Modified Time 2020-05-30T07:52:14.587Z Current Modified Time 2020-05-30T08:01:40.948Z The contents of the current file are:File Contents are Edited The file was edited Previous Modified Time 2020-05-30T08:01:40.948Z Current Modified Time 2020-05-30T08:01:45.950Z The contents of the current file are:File Contents are Edited Again
範例2:本示例顯示了文件重命名然後重命名回其原始名稱,導致文件消失並重新出現時的文件修改時間。
// Node.js program to demonstrate
// the fs.watchFile() method
// Import the filesystem module
const fs = require('fs');
fs.watchFile("example_file.txt", (curr, prev) => {
console.log("\nThe File was modified");
console.log("Previous Modification Time", prev.mtime);
console.log("Current Modification Time", curr.mtime);
});
// 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"),
6000
);
輸出:
Previous Modification Time 2020-05-30T08:01:45.950Z Current Modification Time 1970-01-01T00:00:00.000Z The File was modified Previous Modification Time 2020-05-30T08:01:45.950Z Current Modification Time 2020-05-30T08:01:45.950Z
參考: https://nodejs.org/api/fs.html#fs_fs_watchfile_filename_options_listener
相關用法
- Node.js console.timeLog()用法及代碼示例
- Node.js GM emboss()用法及代碼示例
- Node.js GM sharpen()用法及代碼示例
- Node.js GM blur()用法及代碼示例
- Node.js GM bordercolor()用法及代碼示例
- Node.js GM flip()用法及代碼示例
- Node.js GM flop()用法及代碼示例
- Node.js GM shave()用法及代碼示例
- Node.js GM solarize()用法及代碼示例
- Node.js GM spread()用法及代碼示例
- Node.js GM border()用法及代碼示例
- Node.js GM write()用法及代碼示例
- Node.js GM magnify()用法及代碼示例
- Node.js GM minify()用法及代碼示例
- Node.js GM lower()用法及代碼示例
注:本文由純淨天空篩選整理自sayantanm19大神的英文原創作品 Node.js | fs.watchFile() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。