2012-06-25 113 views
-1

源代碼:vb.netVb.net - 目標文件夾上的FileMovement鎖

我們正在使用File.Move()方法將文件從源移動到目標位置。 但是目標位置正在被一個工具監視,無論何時我們將文件移動到目標位置,它都會拾取文件並對其進行處理。這裏的問題是,當我們嘗試移動像5GB文件那樣的大容量文件時,該工具立即拿起文件並在移動操作完成之前嘗試處理它,並向所有用戶發送失敗通知。在再次成功移動文件完全相同,並且這一次成功處理併發送成功通知。

我們無法控制監視目標文件夾的工具,因爲它是第三方工具。但是我們想要找到另一種選擇,將鎖定在ReadWrite訪問目標文件夾上,直到移動操作完成,這樣第三方將無法獲取或嘗試訪問該文件。

請幫助我們。

+0

你試過讓它只讀嗎? – paragy

+1

嘗試複製[與流](http://msdn.microsoft.com/en-us/library/5h0z48dh.aspx)同時拒絕任何[共享](http://msdn.microsoft.com/en-us/library /system.io.fileshare.aspx)。 – GSerg

+1

這是全部在同一臺機器中,還是在整個網絡中? –

回答

0

不知道它的工作原理,但你也許能夠使與目錄下面的工作,以及:

FileOpen(1, "c:\file.ext", OpenMode.Binary)  
Lock(1) 
'Do something with file here 
Unlock(1) 
FileClose(1) 

參考和榜樣here

我希望它能幫助。

0

首先,我同意@hometoast,有時這樣的工具只是尋找特定的文件擴展名,以便您可以使用不同的文件擴展名進行復制,然後重命名。

但禁止,將文件下載到一個臨時位置,然後將文件移動到被監視的目錄。 Move不會重新複製文件內容,而只是更新文件系統中的指針。應該是原子的。

+0

但是,「移動」保留了文件的權限,這可能是一個問題。 – GSerg

+0

OP沒有提及任何權限問題? – tcarvin