gpt4 book ai didi

matlab - 检测传输中的文件?

转载 作者:行者123 更新时间:2023-12-03 22:20:51 25 4
gpt4 key购买 nike

我正在编写一个应用程序,它通过每隔几秒轮询一次目录来监视新输入文件的目录。新文件通常可能有几兆字节,因此需要一些时间才能完全到达输入目录(例如:从远程共享复制)。

有没有一种简单的方法可以检测文件当前是否正在被复制?理想情况下,任何方法都与平台和文件系统无关,但如果做不到这一点,不同平台可能需要特定的策略。

我已经考虑过将两个目录列表分开几秒钟并比较文件大小,但这引入了时间/可靠性权衡,除非别无选择,否则我的上级对此并不满意。

作为背景,应用程序是作为一组 Matlab M 文件编写的,所以恐怕没有 JRE/CLR 技巧......


编辑:文件通过直接移动/复制操作直接到达输入,来自网络驱动器或本地文件系统上的另一个位置。此复制操作可能由人类用户而不是另一个应用程序启动。

因此,很难让文件提供者承担添加控制文件或使用中间暂存区的任何责任...


结论:似乎没有简单的方法可以做到这一点,所以我决定采用一种万全的方法 - 如果满足以下条件,文件就可以处理了:

  • 它的大小在一定时间内不会改变,
  • 可以以只读模式打开文件(某些复制过程会锁定文件)。

感谢大家的回复!

最佳答案

最安全的方法是让将文件放入目录的应用程序首先将它们放入不同的临时目录,然后将它们移动到真实目录(即使使用 FTP 或文件共享)。您还可以使用命名约定在一个目录中实现相同的结果。

编辑:它实际上取决于文件系统,取决于它的复制功能是否具有“完整文件”的概念。我不太了解 SMB 协议(protocol),但如果它有这个概念,您可以编写一个应用程序来公开 SMB 接口(interface)(或修补 Samba)和一个 API 以获得完成文件副本的通知。不过可能需要做很多工作。

关于matlab - 检测传输中的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/343391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com