桌面应用可以直接读写用户文件系统而非局限在沙盒容器
别名: 直接文件访问 · 沙盒容器 · document-centric desktop
概念解释
桌面软件打开「文档」里任意一个文件夹、把结果另存到 U 盘、监视某个目录里新出现的文件——这些动作默认成立,因为应用可以直接读写用户的文件系统,而不是被关在自己的容器里只能看见几份被允许的副本。直接文件系统访问(direct filesystem access)是桌面相对移动沙盒的能力差异:文件是用户的对象,路径由用户指定,应用是过客。沙盒化正在收紧这套能力是另一条;这里只谈「可以直接读写」本身如何塑造桌面交互,以及它与「只能在容器里活动」的差别。
机制
移动端把应用数据放进私有容器,用户没有一张全机文件地图;桌面把磁盘当成用户已经拥有的空间,打开/保存对话框、访达/资源管理器、命令行,都是同一张地图上的不同入口。直接读写让「文档住在应用外面」成为默认心智:人用文件夹分类、用别的工具改同一份文件、用备份软件按路径收走。应用若把文档只写进自己的容器,桌面用户会认为文件丢了——不是丢在磁盘上,是丢在他们的地图之外。能力也带来耦合:应用必须假设路径会变、文件会被别人打开、磁盘会满、权限会在中途被系统改掉。容器模型把这些假设收掉,代价是用户再也无法用自己的文件工具参与。
怎么研究
比较同一任务在「可任选路径保存」和「只保存在应用库」两种产品上的找回与交接。让人保存后去访达/资源管理器里找,或用另一个应用打开刚才那份文件。
自变量:保存位置是否用户指定、应用库是否暴露为真实文件夹、是否提供「在文件夹中显示」。 因变量:保存后能否在系统文件管理器中定位、用另一应用打开是否成功、主观「文件现在属于谁」。
实验室若只在应用内点打开/保存,测不到地图是否建立。要强迫一次应用外的找回。开发者被试往往接受容器,因为他们知道库路径;目标用户按文件夹模型找,失败会被说成「我不会用这个软件」。
边界
浏览器、商店分发的桌面应用已经有一半生活在容器里,用户对「打不开任意路径」的容忍在上升,但专业工具(影像、代码、科学数据)仍以任意路径为合格线。纯云端文档把地图搬到网站上,本地文件系统不再是主场,这条减弱。便携软件从 U 盘运行时,直接读写的是那张盘,不是用户主目录,地图范围要跟着可执行文件走。加密磁盘或企业管控把「直接」变成「直接但只在策略允许的盘符上」,能力还在,范围被政策切过。
怎么落地
- 默认让用户指定打开和保存的路径,并把该路径当成文档的身份,不要只写进应用库却告诉人「已保存」。
- 提供「在文件夹中显示 / 显示资源管理器中的位置」,让系统文件地图和应用内列表对上。
- 需要私有缓存时与用户文档分开存放,删除应用不应带走用户指定路径上的文件。
- 验证:保存一份文件,完全退出应用,只凭系统文件管理器找到它并用另一个应用打开。找不到或只能在原应用里看见,就是把桌面文档做成了容器对象。再卸载应用,用户指定路径上的文件应仍在。