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

如何使用NodeJS判断文件或文件夹是否隐藏

判断文件/文件夹是否隐藏(Node.js 实现)

以下是跨平台的可运行代码,无需依赖第三方npm包,直接使用Node.js内置的fs和path模块实现:

异步版本(推荐,避免阻塞事件循环)

const fs = require('fs').promises;
const path = require('path');
const { FILE_ATTRIBUTE_HIDDEN } = require('fs').constants;

async function isHidden(filePath) {
  // 使用lstat获取文件/文件夹本身的信息(避免符号链接指向的目标文件干扰)
  const stat = await fs.lstat(filePath);
  const fileName = path.basename(filePath);

  // Unix/Linux/macOS 系统:隐藏文件/文件夹以.开头,排除特殊的.和..目录
  if (process.platform !== 'win32') {
    return fileName.startsWith('.') && fileName !== '.' && fileName !== '..';
  }

  // Windows系统:检查文件属性中的隐藏标记位
  return !!(stat.mode & FILE_ATTRIBUTE_HIDDEN);
}

// 测试示例
(async () => {
  try {
    console.log('Unix下的.git目录是否隐藏:', await isHidden('./.git'));
    console.log('Windows下的AppData目录是否隐藏:', await isHidden('C:\\Users\\你的用户名\\AppData'));
    console.log('普通文件test.txt是否隐藏:', await isHidden('./test.txt'));
  } catch (error) {
    console.error('检查隐藏状态失败:', error.message);
  }
})();

同步版本(适合简单场景)

const fs = require('fs');
const path = require('path');
const { FILE_ATTRIBUTE_HIDDEN } = fs.constants;

function isHiddenSync(filePath) {
  const stat = fs.lstatSync(filePath);
  const fileName = path.basename(filePath);

  if (process.platform !== 'win32') {
    return fileName.startsWith('.') && fileName !== '.' && fileName !== '..';
  }

  return !!(stat.mode & FILE_ATTRIBUTE_HIDDEN);
}

// 测试示例
try {
  console.log('Unix下的.git目录是否隐藏:', isHiddenSync('./.git'));
  console.log('Windows下的hidden.txt是否隐藏:', isHiddenSync('C:\\Users\\你的用户名\\Desktop\\hidden.txt'));
  console.log('普通文件normal.txt是否隐藏:', isHiddenSync('./normal.txt'));
} catch (error) {
  console.error('检查隐藏状态失败:', error.message);
}

代码说明

  • 跨平台逻辑:
    • Unix类系统(Linux、macOS等):遵循系统约定,文件名以.开头且不是./..的文件/文件夹即为隐藏
    • Windows系统:通过文件属性的FILE_ATTRIBUTE_HIDDEN位掩码判断,这是系统级的隐藏标记
  • 使用lstat而非stat:避免符号链接(快捷方式)的干扰,确保判断的是链接本身而非目标文件的状态
  • 错误处理:包含基础的异常捕获,处理文件不存在、权限不足等场景

内容的提问来源于stack exchange,提问作者Ehud Kirsh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 15:38:28