macOS 怎么做到文件重命名后应用内最近文件列表也自动重命名的

153 天前
 shinsekai

比如 Mac 版 Office ,最近文件列表可以自动检测文件名改动,而 Windows 下 Office 文件重命名后应用内会提示文件不存在

1386 次点击
所在节点    macOS
12 条回复
paopaosa
153 天前
GabrielleBellamy
153 天前
这两个原理好像是不一样的。Windows 下的最近文件只是一个快捷方式一样的文件,但是 Mac 上的是那个文件实体。所以以前有人以为 Mac 上的也是快捷方式,全部删除,结果所有文件都给删了……
imldy
152 天前
有别的唯一 id ?
dandycheung
152 天前
有没可能它就是个软链接……
dandycheung
152 天前
😝,貌似想的不对。
Bingchunmoli
152 天前
@GabrielleBellamy 也不对吧,Windows 删除最近文件也是会删除文件,有单独的清除记录的标签选择
GabrielleBellamy
152 天前
@Bingchunmoli 是吗?以前用的时候,Windows 的一些清理垃圾的软件还会带上一个功能,就是清空最近使用的目录。不过我好久没用了,现在可能系统更新了,最新的 11 是什么情况我不太清楚。至于 macOS 下用户不慎删除文件的事情倒是好像真的发生过。
geelaw
152 天前
每个软件都可以自己实现最近打开的文件列表,所以这个问题无从回答。我也不太熟悉 macOS ,但可以提供一下 Windows 的视角,两者相通,假设楼主说的是程序不在运行的时候改名。

1. 存文件路径、建立软链接

无法处理文件重命名。

2. 建立硬链接、存标识符(“inode”)

技术上可行,但是实操不可行,原因有两点:一是并不是所有的文件系统都有硬链接,每个文件系统的标识符格式不同;二是很多软件都会采用写新、删旧、重命名三部曲覆盖文件,这会导致以前的硬链接和新文件脱离关系。

3. 建立快捷方式(.lnk )

这是标准解法,因为快捷方式优先考虑原来的路径是否存在,如果不存在则会开始链接追踪,采用文件标识符(“inode”)、文件创建读取修改时间、文件大小、文件路径等一系列匹配方法找到文件的新位置、新名字。

三部曲覆盖文件会转移文件时间信息(不转移标识符),这叫做“文件系统隧穿”。

macOS 里快捷方式对应的概念是“替身”,或许也有追踪的功能。
geelaw
152 天前
另外我对 Windows 下 Office 提示文件不存在存疑,至少跳转列表是可以正确处理文件移动的。
bao3
152 天前
更神奇的是,比如你正在阅读一个 pdf 文件,但同时你可以在 finder 里重命名它,随之 pdf 软件当前在阅读的 pdf 文件的名字也更改了。 以前在 windiws ,会提示文件被打开,无法重命名。
就想说, 这个特性,真的很棒。
dode
152 天前
修改名字,linux 系统底层文件 inode ID 不变
AlphaRobert
152 天前
参见 NSURL 的 bookmark 相关方法。Bookmark 是官方推荐的持久化存储文件地址的途径,每次解析 bookmark 会动态地获取 URL

@bao3 NSDocument 类会监听文件移动( NSFilePresenter ),然后自动触发窗口标题的更新

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/998814

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX