V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shinsekai
V2EX  ›  macOS

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

  •  
  •   shinsekai · 2023-12-08 20:59:09 +08:00 · 1567 次点击
    这是一个创建于 384 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    12 条回复    2023-12-09 19:23:13 +08:00
    paopaosa
        1
    paopaosa  
       2023-12-08 21:57:55 +08:00
    GabrielleBellamy
        2
    GabrielleBellamy  
       2023-12-08 22:56:18 +08:00
    这两个原理好像是不一样的。Windows 下的最近文件只是一个快捷方式一样的文件,但是 Mac 上的是那个文件实体。所以以前有人以为 Mac 上的也是快捷方式,全部删除,结果所有文件都给删了……
    imldy
        3
    imldy  
       2023-12-08 23:23:10 +08:00 via Android
    有别的唯一 id ?
    dandycheung
        4
    dandycheung  
       2023-12-08 23:44:46 +08:00 via Android
    有没可能它就是个软链接……
    dandycheung
        5
    dandycheung  
       2023-12-08 23:45:40 +08:00 via Android
    😝,貌似想的不对。
    Bingchunmoli
        6
    Bingchunmoli  
       2023-12-09 00:01:50 +08:00 via Android
    @GabrielleBellamy 也不对吧,Windows 删除最近文件也是会删除文件,有单独的清除记录的标签选择
    GabrielleBellamy
        7
    GabrielleBellamy  
       2023-12-09 01:21:02 +08:00
    @Bingchunmoli 是吗?以前用的时候,Windows 的一些清理垃圾的软件还会带上一个功能,就是清空最近使用的目录。不过我好久没用了,现在可能系统更新了,最新的 11 是什么情况我不太清楚。至于 macOS 下用户不慎删除文件的事情倒是好像真的发生过。
    geelaw
        8
    geelaw  
       2023-12-09 05:13:44 +08:00 via iPhone
    每个软件都可以自己实现最近打开的文件列表,所以这个问题无从回答。我也不太熟悉 macOS ,但可以提供一下 Windows 的视角,两者相通,假设楼主说的是程序不在运行的时候改名。

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

    无法处理文件重命名。

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

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

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

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

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

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

    @bao3 NSDocument 类会监听文件移动( NSFilePresenter ),然后自动触发窗口标题的更新
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2708 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:04 · PVG 20:04 · LAX 04:04 · JFK 07:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.