📜  Node.js fs.fdatasync() 方法

📅  最后修改于: 2022-05-13 01:56:35.286000             🧑  作者: Mango

Node.js fs.fdatasync() 方法

fs模块提供了一个 API,用于以与标准 POSIX 函数紧密建模的方式与文件系统交互。所有文件系统操作都有同步和异步形式,并且大多数异步形式将完成回调作为其最后一个参数。

fs.fdatasync() (在v0.1.96中添加)方法是fs模块的内置应用程序编程接口,类似于fs.fsync(),它减少了不需要同步所有元数据的应用程序的磁盘活动与磁盘。需要元数据以允许正确处理后续数据检索,因为它不会刷新修改的元数据。

句法:

fs.fdatasync(fd, callback);

可以使用以下方式访问“ fs ”模块:

const fs = require('fs');

参数:此方法接受上面提到的两个参数,如下所述:

  • fd <整数> 该参数接受<整数> 类型值。
  • callback < 函数 > 该参数需要回调函数,注意嵌套回调或回调地狱。
    • err < Error > 如果回调函数没有正确处理,则抛出错误。  

示例 1:文件名:index.js

Javascript
// Node.js program to demonstrate the 
// fs.fdatasync() method 
  
// Using require to access fs module 
const fs = require('fs');
  
// Basic demo of fs.fdatasync
fs.fdatasync(1, err => {
    if (err) {
        console.log('error', err);
    }
    else {
        console.log('no-error');
    }
    console.log("Data Sync...");
})
  
// alfa function
function alfa() {
    console.log("Printing callback in "
        + "console from callback alfa... ");
    return "hiii";
}
function data() {
    console.log("Printing callback in "
        + "console from data... ");
}
  
// Open the file
fs.open('filename.txt', "a+", (err, fd) => {
    if (err)
        throw err;
  
    // Write our data
    fs.writeFile(fd, data, (err) => {
  
        // checking error
        if (err)
            throw err;
          
        // Force the file to be flushed
        fs.fdatasync(fd, function alfa(err) {
            if (err)
                throw err
        });
        fs.fdatasync(5, data);
      
        // print after dataSync
        console.log("Writing 'data' in 'filename.txt'... ")
    });
});


使用以下命令运行index.js文件:

node index.js

输出:

error [Error: EBADF: bad file descriptor, fdatasync] {
  errno: -4083,
  code: 'EBADF',
  syscall: 'fdatasync'
}
Data Sync...
Writing 'data' in 'filename.txt'...       
Printing callback in console from data... 

参考: https://nodejs.org/api/fs.html#fs_fs_fdatasync_fd_callback