• path {string|Buffer|URL}
    • options {Object}
      • bigint {boolean} 返回的 [fs.Stats] 对象中的数值是否为 bigint 型。 默认值: false
    • callback {Function}
      • err {Error}
      • stats {fs.Stats}

    异步的 stat(2)。 回调有两个参数 (err, stats),其中 stats 是 [fs.Stats] 对象。

    如果发生错误,则 err.code 会是[常见的系统错误][Common System Errors]之一。

    不建议在调用 fs.open()fs.readFile()fs.writeFile() 之前使用 fs.stat() 检查文件的存在性。 而是应该直接地打开、读取或写入文件,如果文件不可用,则处理引发的错误。

    若要只检查文件是否存在,但没有更多的操作,则建议使用 [fs.access()]。

    例如,给定以下的目录结构:

    1. - 目录
    2. -- 文件.txt
    3. - 文件.js

    以下程序会检查给定路径的文件属性:

    1. const fs = require('fs');
    2. const pathsToCheck = ['./目录', './目录/文件.txt'];
    3. for (let i = 0; i < pathsToCheck.length; i++) {
    4. fs.stat(pathsToCheck[i], function(err, stats) {
    5. console.log(stats.isDirectory());
    6. console.log(stats);
    7. });
    8. }

    结果的输出会类似于:

    1. true
    2. Stats {
    3. dev: 16777220,
    4. mode: 16877,
    5. nlink: 3,
    6. uid: 501,
    7. gid: 20,
    8. rdev: 0,
    9. blksize: 4096,
    10. ino: 14214262,
    11. size: 96,
    12. blocks: 0,
    13. atimeMs: 1561174653071.963,
    14. mtimeMs: 1561174614583.3518,
    15. ctimeMs: 1561174626623.5366,
    16. birthtimeMs: 1561174126937.2893,
    17. atime: 2019-06-22T03:37:33.072Z,
    18. mtime: 2019-06-22T03:36:54.583Z,
    19. ctime: 2019-06-22T03:37:06.624Z,
    20. birthtime: 2019-06-22T03:28:46.937Z
    21. }
    22. false
    23. Stats {
    24. dev: 16777220,
    25. mode: 33188,
    26. nlink: 1,
    27. uid: 501,
    28. gid: 20,
    29. rdev: 0,
    30. blksize: 4096,
    31. ino: 14214074,
    32. size: 8,
    33. blocks: 8,
    34. atimeMs: 1561174616618.8555,
    35. mtimeMs: 1561174614584,
    36. ctimeMs: 1561174614583.8145,
    37. birthtimeMs: 1561174007710.7478,
    38. atime: 2019-06-22T03:36:56.619Z,
    39. mtime: 2019-06-22T03:36:54.584Z,
    40. ctime: 2019-06-22T03:36:54.584Z,
    41. birthtime: 2019-06-22T03:26:47.711Z
    42. }