2010-12-02 82 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