2010-12-02 110 views
1

我有一个程序定期检查新文件,然后处理它们。即使通过FTP复制文件,FileSystemObject也会移动文件

因为我想保证文件不会被FTP复制,所以我先移动文件。
奇怪的是,在Windows Server 2008中,文件即使被复制也会被移动,并且FTP复制操作在新位置结束。

这怎么可能?

我测试过这个问题使用这段简单的线条在VBS文件:

dim fso 
set fso = createobject("Scripting.FileSystemObject") 
fso.MoveFile "bigfile.zip", "moved\bigfile.zip" 

回答

1

那么,当你移动一个文件(在同一个驱动器),你只告诉文件系统该文件可以在其他地方找到,但实际上并没有移动任何数据。所以我猜想这一举措继续进行,并告诉文件系统现在可以找到文件的位置,但FTP操作已经在硬盘上为实际数据分配了空间,因此文件已被移动的事实赢得了“不会影响以任何方式存储数据的位置,因此它都可以工作。

如果您将该文件移动到另一个驱动器,我会假设某些地方会出现问题。

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

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

+0

我已经解决了试图打开文件进行写入的问题。但只是为什么操作系统允许它 – 2010-12-05 00:04:09