我有一个程序可以定期检查新文件,然后处理它们。

因为我希望确保文件不会通过 FTP 进行复制,所以我首先移动该文件。
奇怪的是,在 Windows Server 2008 中,即使在复制时文件也会被移动,并且 FTP 复制操作会在新位置结束。

这怎么可能?

我已经在 vbs 文件中使用以下简单的代码行测试了该问题:

dim fso
set fso = createobject("Scripting.FileSystemObject")
fso.MoveFile "bigfile.zip", "moved\bigfile.zip"
有帮助吗?

解决方案

好吧,当您移动文件(在同一驱动器中)时,您只是告诉文件系统可以在其他地方找到该文件,而实际上并没有移动任何数据。因此,我猜测移动会继续进行,并告诉文件系统现在可以在哪里找到文件,但 FTP 操作已经在硬盘驱动器上为实际数据分配了空间,因此文件已被移动的事实不会发生。不会以任何方式影响数据的存储位置,因此一切正常。

如果您将文件移动到另一个驱动器,我会假设某些地方会损坏。

如果您有权访问客户端,则可以让客户端随后使用名称写入另一个小文件 bigfile.zip.complete 或类似的,您的服务器应用程序可以在开始处理之前等待,这样您就可以确保它已完成复制(如果连接中途中断并且客户端停止上传文件,即使它不是),这也可以工作完成的)。

或者,如果您无法访问客户端,也许您可​​以尝试查看文件的大小,如果它在几秒钟或几分钟内没有发生变化,那么它有望完成。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top