跳到主要内容

免费 ASCII 树形图生成器

将缩进列表转为整洁的文件夹树(├── └──),适合 README 和文档。支持 Unicode 或纯 ASCII 输出。完全在浏览器中运行。

加载后可离线使用
导入选项
默认跳过 node_modules、.git、构建输出和缓存。

使用空格或制表符缩进以嵌套项目。每一层更深的缩进即为子项。 在 ' # '、' // '、' - ' 或 ' <- ' 之后添加注释,输出时会作为注释对齐。可粘贴路径列表(git ls-files、find、dir /s /b)来生成嵌套结构;名称以 / 结尾表示空文件夹。 导入或拖入文件夹或 .zip 时只读取文件名,不读取文件内容,并会跳过 node_modules、.git 及其他构建文件夹(见“导入选项”)。

树形图
注释样式
my-project
├── src
│   ├── components
│   │   ├── Button.tsx
│   │   └── Modal.tsx
│   ├── lib
│   │   └── utils.ts
│   └── index.ts  # entry point
├── public
│   └── favicon.ico
├── package.json
└── README.md

💡 粘贴文件夹结构(或任何嵌套大纲),即可获得可直接插入 README、注释或文档的清晰树形图。在不支持方框字符的环境中请使用 ASCII 模式。一切在浏览器中运行。

常见用途

  • 向README添加文件夹树生成一个整洁的项目结构树来记录您的存储库。
  • 记录项目结构为技术文档和wiki创建目录树。
  • 为代码注释制作树生成结构图以嵌入源代码注释中。
  • 在演讲中显示文件树为幻灯片和教程创建整洁的目录图。
  • 将大纲转换为树将任何嵌套大纲(不仅仅是文件)可视化为树。

工作原理

在 README 中记录文件夹结构,通常要手动画出 ├── 和 └── 连接线。本工具可根据简单的缩进列表自动生成。

  1. 1
    输入缩进大纲
    每行一个项目,用空格或制表符缩进来嵌套,缩进深度决定层级。
  2. 2
    解析为树形结构
    基于栈的解析器把缩进转换为嵌套结构,全程在浏览器中完成。
  3. 3
    绘制树形连接线
    生成正确的 ├──、└── 和 │ 引导线,垂直线会正确地延续到嵌套分支中。
  4. 4
    复制结果
    选择 Unicode 或纯 ASCII 连接线,把树形图复制到 README、文档或代码注释中。

简单的文本工具,完全在你的设备上运行,不会上传任何内容。

指南

操作示例

页面打开时带有一个 12 行的示例:“my-project”下包含“src”、“public”、“package.json”和“README.md”,而“src”下包含“components”、“lib”和“index.ts”。使用默认的“├── Unicode”样式时,├── 标记其下方还有同级项的项目,└── 标记最后一个,而 │ 用于延伸分支。输入为“index.ts # 入口点”的注释会显示为“index.ts # 入口点”,所有注释会在带有注释的最长行之后两个空格处对齐成一列。按“- Markdown”可生成嵌套项目符号(每级缩进两个空格),按“|-- ASCII”则生成纯字符样式。粘贴三条路径 src/app/page.tsx、src/app/layout.tsx 和 src/lib/utils.ts 会生成 src,其下包含 app(包含 page.tsx、layout.tsx)和 lib(包含 utils.ts)。

使用哪些设置,以及限制

  • 为树形图要放置的位置选择样式。 “├── Unicode”在 README 和文档中效果最佳。“|-- ASCII”仅使用纯字符,适用于可能无法显示方框字符的终端、日志和代码注释。“- Markdown”生成项目符号列表。“下载”会保存 tree.txt,或在 Markdown 样式下保存 tree.md。
  • 使用缩进进行嵌套,或粘贴路径。 每增加一级缩进,就会成为上一行的子项。一个制表符计为四个空格,在输入框中按 Tab 键会插入两个空格(Shift+Tab 可移除它们;按 Escape 后再按 Tab 可离开输入框)。你也可以粘贴路径列表,例如 git ls-files、find 或 dir /s /b 的输出,使用 / 或 \ 作为分隔符,它们会合并到一个树形图中。在名称末尾加上 / 可标记空文件夹。
  • 在分隔符后添加注释。 在名称后加上“ # ”、“ // ”、“ - ”或“ <- ”,两侧各留一个空格,该行剩余部分将成为注释,并在同一列中对齐。“注释样式”用于选择输出显示的是 #、// 还是 <--。包含空格、破折号和另一个空格的名称,例如“My Doc - final.docx”,会被拆分为名称和注释,因此请去掉破折号周围的空格来书写。
  • 将文件夹排在前面,并用斜杠标记文件夹。 “文件夹优先”会在每个层级将文件夹排在文件之前,除此之外保持你的原有顺序。“末尾 /”会在每个文件夹后添加 /,即任何有子项的或你以 / 结尾的名称。
  • 粘贴树形图以重新设置其样式。 如果你粘贴的文本看起来已经是树形图(包含 ├──, └──, |-- 或 +-- 行,包括 Linux tree 和 Windows tree /f 的输出),输入框会将其转换为缩进列表,并显示“检测到粘贴的树形图,已转换回可编辑的缩进列表。”然后你可以切换样式、排序或添加注释。Windows 打印的标题行,例如“文件夹 PATH 列表”和“卷序列号”,会被丢弃。
  • 从文件夹或 zip 文件导入名称。 “导入文件夹”(在手机上隐藏)、将文件夹拖放到输入框,或“导入 .zip”仅读取文件名,绝不读取内容。在“导入选项”下,“忽略名称(逗号分隔,可用 *)”默认会跳过 node_modules, .git, dist, build, .next, __pycache__, .venv 和其他常见的构建文件夹,“最大深度”起始为 7,范围从 1 到 30。深度计算的是文件之上的文件夹数量,包含顶层文件夹。会有一条注释说明跳过了多少文件。

常见问题及解决方法

生成的树形图是平的,没有分支。
没有任何内容被缩进,因此每一行都成了独立的顶级项。请使用空格或 Tab 键缩进子项。唯一的例外是路径列表(名称中包含 / 或 \),它会自动为你嵌套,但前提是所有行都没有缩进。
文件名的一部分显示为注释。
一个空格,后跟 #、//、- 或 <-,再跟一个空格,会开始一个注释。“My Doc - final.docx”会变成名称“My Doc”和注释“final.docx”。请移除破折号周围的空格,如“My Doc-final.docx”。如果 # 或 - 两侧没有空格,如“C# notes.md”,则会保留在名称中。
提示“无法读取该 .zip。请确认它是有效且未加密的 zip 文件。”
该文件无法作为 zip 文件打开:它可能已损坏、受密码保护,或者根本不是 zip 文件。请创建一个正常的 zip 文件并重试。“该 .zip 中没有任何条目。”表示压缩包是空的。
导入文件夹后缺少文件。
请查看输入框下方的注释,例如“已跳过 12 个文件(被忽略或层级过深)”。当任何文件夹或文件名匹配“忽略名称”,或者它们所在的层级深于“最大深度”时,文件会被跳过。打开“导入选项”并编辑列表或提高最大深度;除非你此后编辑了文本,否则更改将应用于你上次的导入。此外,拖放的文件夹在应用忽略列表之前,最多只能读取约 50,000 个名称,因此一个包含庞大 node_modules 的项目可能会丢失实际文件:请改用“导入文件夹”或使用不包含 node_modules 的 zip 文件。
提示“无法读取拖入的文件夹或文件。”
浏览器拒绝列出拖放的项目。请改用“导入文件夹”,或创建一个 .zip 文件并使用“导入 .zip”。在手机上,文件夹选项是隐藏的,因此请在那里使用 zip 文件。

对比分析

对于你已有的文件夹,在终端中使用 tree 命令(或 Windows 上的 tree /f)可以一步生成精确的列表,而此工具可以重新设置其打印输出的样式。当你想规划一个尚不存在的布局、仅显示文件夹的一部分、添加注释,或在 Unicode、ASCII 和 Markdown 之间切换时,可以使用此工具。它仅根据名称工作,不包含文件大小、日期、权限或内容,并且导入操作会跳过常见的构建文件夹,除非你更改列表。在样式之间,Unicode 可读性最好,但其方框字符在某些地方可能无法显示;ASCII 是终端和代码注释的安全选择;而 Markdown 适用于应渲染为项目符号的列表。

相关工具

常见问题