如何判断文件传输完成?

使用问题 · 900 次浏览
有过丶且多 创建于 10天0小时前

想要添加一个文件系统事件来监控是否有新的视频文件传入到文件夹中,想要在监控到新的视频文件后打开该怎么操作?

文件创建事件会在文件一开始写入时就触发,这时候想要打开该文件会失败,因为文件还未传完,该如何判断文件是否写入完成呢?

延迟执行时间没办法满足需求,因为文件大小不一,所以传输时间非常不固定

有过丶且多 最后更新于 2024/4/24

回复内容
CL 10天0小时前
#1

一些思路

1)找到最长的可能时间,在上面截图里设置“延迟执行时间”,设置一个足够长的时间。

2)在动作中重复尝试对文件进行操作,直到成功。

有过丶且多 回复 CL 10天0小时前 :

使用文件系统监控模块尝试成功了,太强了,点赞点赞

有过丶且多 回复 CL 9天2小时前 :

昨天测试成功的动作今天出问题了,测试后发现文件监控系统等待事件发生changed没有监听到文件变化,但是文件还没传完,然后单独测试后发现changed只在文件创建时和文件传输完成后分别可以监听到一次,但是昨天测试的是只要文件还在传输就可以实时监听到,想问下为什么会出现两种情况?哪种才是正常的呢?是因为昨天多次尝试“持续监控”后“等待事件发生”出bug了?

有过丶且多 回复 CL 8天21小时前 :
win系统的文件传输有点迷,有时候是先创建带有后缀的空文件再写入数据,有时候是传输完成后直接创建完整的文件,所以现在是判断文件大小来实现的,之前一直局限于文件监控了,思维还不够开阔..
DQ_Ye 9天0小时前
#2

刚好我自己就有做,你可以复制我的修改一下,我的用途是监控下载文件夹,出现特定文件时候提醒我是否打开,我设置的快捷键是i,触发条件如下图,动作地址:自动打开最新下载文件 - by DQ_Ye - 动作信息 - Quicker (getquicker.net),目前使用基本没出现过什么问题

DQ_Ye 回复 DQ_Ye 9天0小时前 :

你的问题是在传输中并不是完整文件,所以监控到的是需要的文件,你按我写的改为特定后续,比如.mp4,就会出现新的mp4文件才运行动作了

我的参数如下:$={Name}.EndsWithAny(true,".pdf",".docx",".doc",".exe",".XLS",".XLSX",".RAR",".7Z",".zip") && (new FileInfo({FullPath})).Attributes.HasFlag(FileAttributes.Hidden) == false

你自己根据实际情况改吧

DQ_Ye 最后更新于 9天0小时前
有过丶且多 回复 DQ_Ye 8天21小时前 :

感谢感谢,不过我这边的需求跟下载不太一样,手机通过局域网传到电脑的话会直接创建好文件,然后再像里面写入数据,所以用判断文件大小实现啦,之前一直局限于文件监听了,思路还是不够开阔..

回复主贴