文件管理器回答“文件在哪、该去哪”,这篇讲另一半:把文件点开之后会发生什么。
DSHBox 的原则是每个文件都有界面,而撑起这条原则的,是一个从不相信单一信号的分类器。
每个文件都有归宿
打开之前,文件要经过三段式分类:文件头部的魔数(magic bytes)、
对实际内容的嗅探,最后才是扩展名。扩展名放在最后,
是因为它最会撒谎。三段的结果决定由哪个查看器接手;当三段全都耸肩时,
答案也不是“无法打开”,而是十六进制查看器。
|
| | 文件类型 | 你会看到什么 |
| 文本、代码、配置 | 带语法高亮的编辑器,按大小分级 |
| 图片 | 可缩放查看器;GIF 与动态 WebP;Android 12+ 支持 AVIF |
| PDF | 原生分页渲染 |
| zip/jar/apk/epub 与 tar 系列 | 只读浏览、预览、按条目导出 |
| docx/xlsx | 只读纯文本提取 |
| Markdown | 源码编辑加预览 |
| HTML/SVG | 离线 WebView 渲染,禁用脚本与网络 |
| 其他一切 | 十六进制视图、信息卡片、交给外部应用 |
文本与代码
文本文件在基于 Sora Editor 的编辑器中打开:行号、撤销/重做、
文件内搜索、自动换行。语法高亮覆盖 JSON、YAML、shell、Python、JavaScript
和 Java/Kotlin。
编码自动检测,也留了手动覆盖入口,应对检测出错的情况。如果一个文件只能有损解码
——存在没有干净映射的字节——编辑器会切到只读,而不是让你把乱码存回去。
大小分级:2 MB 以内直接进入可编辑状态;2–10 MB 先确认再载入;超过 10 MB
只读打开,并只加载末尾窗口,不硬把整个文件塞进内存。保存是原子操作——写了一半的新文件
不会毁掉旧文件;编辑器还能察觉外部改动,“未保存提示”则挡在你和返回手势之间。
图片与 PDF
图片支持双指缩放和双击,特别长的图片按条带加载,而不是一次性生成一张巨型位图。
GIF 和动态 WebP 会动;AVIF 在 Android 12 及以上可看。
PDF 走原生分页渲染,符合手机上的阅读直觉。加密 PDF 在 Android 15 及以上可以直接输入密码;
更老的系统版本上,查看器会退让一步,引导你去外部应用打开,而不是抛一个莫名其妙的错误。
压缩包:浏览而非解压
ZIP、JAR、APK、EPUB 和 tar 系列可以不解压直接只读浏览:目录可折叠展开,
加密条目有明确标记,文本条目能就地预览。里面的任何东西都可以导出——单个条目或整个压缩包——
而且带中文文件名的 ZIP 解出来的名字完好无损。7z 和 RAR 不在应用内解包,
而是给出信息卡片并转交外部应用。
十六进制、Office 与渲染文档
十六进制查看器是万能兜底,也是件趁手的工具:偏移、十六进制、ASCII 三列,
按 64 KB 块随机访问,还带熵值估计——某一段是压缩过还是加密过,熵会先给你提示。
Office 文档按代际分家:docx 和 xlsx 在应用内只读提取纯文本;
更老的 doc/xls/ppt 显示信息卡片并转外部打开。
Markdown 可以编辑源码,也可以用 Markwon 预览,表格照常渲染。HTML 和 SVG
在隔离的 WebView 中渲染,JavaScript 与网络访问全部禁用,退出时该 WebView 会被销毁。
没有死胡同
对真正未知或纯二进制的文件,链条是:十六进制看字节、信息卡片看已知信息,
其余交给外部打开、编辑、分享或导出。你永远看得到文件的内容,
也永远有机会把它交给另一个应用。
- 在这些界面之间搬运文件,见《文件管理器详解》。
- 把文件作为附件送进会话,见《附件工作流》。
- 更想用键盘干活时,内置终端里 vim 随时候命。