比如 Mac 版 Office ,最近文件列表可以自动检测文件名改动,而 Windows 下 Office 文件重命名后应用内会提示文件不存在
1
paopaosa 2023-12-08 21:57:55 +08:00
|
2
GabrielleBellamy 2023-12-08 22:56:18 +08:00
这两个原理好像是不一样的。Windows 下的最近文件只是一个快捷方式一样的文件,但是 Mac 上的是那个文件实体。所以以前有人以为 Mac 上的也是快捷方式,全部删除,结果所有文件都给删了……
|
3
imldy 2023-12-08 23:23:10 +08:00 via Android
有别的唯一 id ?
|
4
dandycheung 2023-12-08 23:44:46 +08:00 via Android
有没可能它就是个软链接……
|
5
dandycheung 2023-12-08 23:45:40 +08:00 via Android
😝,貌似想的不对。
|
6
Bingchunmoli 2023-12-09 00:01:50 +08:00 via Android
@GabrielleBellamy 也不对吧,Windows 删除最近文件也是会删除文件,有单独的清除记录的标签选择
|
7
GabrielleBellamy 2023-12-09 01:21:02 +08:00
@Bingchunmoli 是吗?以前用的时候,Windows 的一些清理垃圾的软件还会带上一个功能,就是清空最近使用的目录。不过我好久没用了,现在可能系统更新了,最新的 11 是什么情况我不太清楚。至于 macOS 下用户不慎删除文件的事情倒是好像真的发生过。
|
8
geelaw 2023-12-09 05:13:44 +08:00 via iPhone
每个软件都可以自己实现最近打开的文件列表,所以这个问题无从回答。我也不太熟悉 macOS ,但可以提供一下 Windows 的视角,两者相通,假设楼主说的是程序不在运行的时候改名。
1. 存文件路径、建立软链接 无法处理文件重命名。 2. 建立硬链接、存标识符(“inode”) 技术上可行,但是实操不可行,原因有两点:一是并不是所有的文件系统都有硬链接,每个文件系统的标识符格式不同;二是很多软件都会采用写新、删旧、重命名三部曲覆盖文件,这会导致以前的硬链接和新文件脱离关系。 3. 建立快捷方式(.lnk ) 这是标准解法,因为快捷方式优先考虑原来的路径是否存在,如果不存在则会开始链接追踪,采用文件标识符(“inode”)、文件创建读取修改时间、文件大小、文件路径等一系列匹配方法找到文件的新位置、新名字。 三部曲覆盖文件会转移文件时间信息(不转移标识符),这叫做“文件系统隧穿”。 macOS 里快捷方式对应的概念是“替身”,或许也有追踪的功能。 |
9
geelaw 2023-12-09 05:15:30 +08:00 via iPhone
另外我对 Windows 下 Office 提示文件不存在存疑,至少跳转列表是可以正确处理文件移动的。
|
10
bao3 2023-12-09 11:07:12 +08:00
更神奇的是,比如你正在阅读一个 pdf 文件,但同时你可以在 finder 里重命名它,随之 pdf 软件当前在阅读的 pdf 文件的名字也更改了。 以前在 windiws ,会提示文件被打开,无法重命名。
就想说, 这个特性,真的很棒。 |
11
dode 2023-12-09 13:10:28 +08:00
修改名字,linux 系统底层文件 inode ID 不变
|
12
AlphaRobert 2023-12-09 19:23:13 +08:00 1
参见 NSURL 的 bookmark 相关方法。Bookmark 是官方推荐的持久化存储文件地址的途径,每次解析 bookmark 会动态地获取 URL
@bao3 NSDocument 类会监听文件移动( NSFilePresenter ),然后自动触发窗口标题的更新 |