如何在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
相关产品推荐
相关产品推荐

