當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Node.js fs.watch()用法及代碼示例


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




相關用法


注:本文由純淨天空篩選整理自sayantanm19大神的英文原創作品 Node.js fs.watch() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。