You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Node.js中访问文件系统属性?

在Node.js中访问文件系统属性

嘿,咱们来聊聊怎么在Node.js里操作文件系统的属性吧!Node.js自带的fs模块就是干这个的,它的API模仿了标准POSIX函数,用起来特别顺手。

基础用法(CommonJS模块)

首先,CommonJS风格的引入方式是这样的:

const fs = require("fs");

这个模块提供了同步、异步和Promise三种风格的API来获取文件系统属性,下面给你举几个常用的例子:

异步方式(推荐,不阻塞事件循环)

这种方式不会卡住Node.js的事件循环,适合大多数场景:

// 获取文件/目录的属性
fs.stat('./example.txt', (err, stats) => {
  if (err) {
    console.error('获取属性失败:', err);
    return;
  }
  // 打印关键属性信息
  console.log('文件大小:', stats.size);
  console.log('是否是文件:', stats.isFile());
  console.log('是否是目录:', stats.isDirectory());
  console.log('创建时间:', stats.birthtime);
});

同步方式(适合脚本初始化等阻塞影响小的场景)

如果是在脚本启动阶段,不怕短暂阻塞的话,可以用同步方法:

try {
  const stats = fs.statSync('./example.txt');
  console.log('文件大小:', stats.size);
  console.log('是否是文件:', stats.isFile());
} catch (err) {
  console.error('获取属性失败:', err);
}

Promise方式(ES2017+支持,async/await更优雅)

想用Promise风格的话,直接用fs.promises就行,配合async/await代码可读性拉满:

async function getFileStats() {
  try {
    const stats = await fs.promises.stat('./example.txt');
    console.log('文件大小:', stats.size);
  } catch (err) {
    console.error('获取属性失败:', err);
  }
}

getFileStats();

关于TypeScript提示ts(80001)的解决

你看到的ts(80001)提示,是因为当前文件是CommonJS模块,而TypeScript默认可能期望你使用ES模块。如果想切换到ES模块风格,可以这么操作:

  • 要么把文件后缀从.js改成.mjs,要么在项目的package.json里添加"type": "module"配置
  • 然后用ES模块的引入方式:
import * as fs from 'fs';
// 或者按需引入部分方法
import { stat, statSync } from 'fs';
// Promise风格也可以单独引入
import { promises as fsPromises } from 'fs';

这样就能解决TypeScript的这个提示啦。

内容的提问来源于stack exchange,提问作者Pal vinod kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 15:07:53