V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dicc
V2EX  ›  问与答

请问有没有这样的 api

  •  
  •   dicc · 2022-04-28 09:39:11 +08:00 · 2544 次点击
    这是一个创建于 971 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我现在做了一个文件传输工具,自己用的
    其功能就是,检测一个目录,如果这个目录里面有文件修改,就把他进行传输
    现在使用的是目录轮询,但是感觉不够好,因为每次轮询都是固定时间,睡眠太短导致 cpu 高,睡眠太长又不够及时。
    所以我在想,windows 有没有一个 api ,能够告诉我最近修改了哪些文件,这样就可以做成触发模式,也不需要去遍历和轮询目录了

    第 1 条附言  ·  2022-04-28 16:22:21 +08:00
    其实我的这个工具日常是可以被 jb 工具 [Tools -> Deployment -> Auto Upload] 替代的,只不过最近换了最新版,用了 key 老是提示 key 过期,就用火绒禁用了网络。然后它的 auto upload 也就无法工作了。
    15 条回复    2022-04-28 23:37:24 +08:00
    xtinput
        1
    xtinput  
       2022-04-28 09:39:46 +08:00
    git
    GTim
        2
    GTim  
       2022-04-28 09:40:41 +08:00
    linux inotify
    Mithril
        3
    Mithril  
       2022-04-28 09:49:11 +08:00
    .NET 的话有 FileSystemWatcher
    Windows API 的话 ReadDirectoryChangesW FindFirstChangeNotificationA 或者直接拉 Change Journals
    32uKHwVJ179qCmPj
        5
    32uKHwVJ179qCmPj  
       2022-04-28 09:52:46 +08:00
    Lweiis
        6
    Lweiis  
       2022-04-28 09:57:09 +08:00
    https://freefilesync.org/download.php
    FreeFileSync ,包含一个 RealTimeSync 功能,可以监视文件夹并触发命令行
    chenuu
        7
    chenuu  
       2022-04-28 10:03:11 +08:00
    rclone
    summerwar
        8
    summerwar  
       2022-04-28 10:27:20 +08:00
    如果会 Python ,用 watchdog
    dicc
        9
    dicc  
    OP
       2022-04-28 10:49:02 +08:00
    各位 66666
    kukat
        10
    kukat  
       2022-04-28 13:59:30 +08:00
    rsync?
    blless
        11
    blless  
       2022-04-28 15:57:50 +08:00
    之前用 Go 写东西用过 fsnotify https://github.com/fsnotify/fsnotify win 可用
    同步感觉可以尝试一下 syncthing https://github.com/syncthing/syncthing 还挺好用
    May725
        12
    May725  
       2022-04-28 18:48:35 +08:00
    以前在 v2 看到的
    监听文件变化,自定义后续操作
    https://github.com/dengsgo/fileboy
    0o0O0o0O0o
        13
    0o0O0o0O0o  
       2022-04-28 19:08:14 +08:00 via iPhone
    dicc
        14
    dicc  
    OP
       2022-04-28 20:02:17 +08:00
    @summerwar 终极解决方案!!
    毫毫毫毫毫秒级的,应该是用了 win32api
    结贴
    flynaj
        15
    flynaj  
       2022-04-28 23:37:24 +08:00 via Android
    可以看其它软件是怎么处理的,看看 syncthing
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3105 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:05 · PVG 21:05 · LAX 05:05 · JFK 08:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.