2015-06-03 46 views
0

我有一個在UserX下運行的應用程序。我也有指向同一共享的子文件夾中,如2條網絡路徑:複製文件邊緣案例

  • P1 = \\MyMainShare\share\Folder 1
  • P2 = \\MyMainShare\share\Folder 2

用戶X對P1和P2不許可(這意味着他不能讀或寫在那裏),但我有UserP1和UserP2。 UserP1只能讀/寫P1。 UserP2只能讀/寫P2。

現在我該如何將文件從一個文件夾複製到另一個文件夾?

到目前爲止,我堅持File.Copy和某些種類的模擬,但沒有積極的結果...我得到的是「拒絕訪問」 ...

詳情:

  • 文件被複制可以達到20gb
  • 網絡路徑可能指向「\ localhost \ c $」
  • 這是一個「服務器端」應用程序,這意味着每秒鐘會處理數百個請求......將文件讀取到內存,切換憑據,寫作將被視爲最後的手段由於明顯的結垢問題...

回答

1

由於指定的限制條件,您沒有多個選項。

一個可能更好的選擇不是「讀內存/開關憑證/寫」將做到以下幾點:

(從分享1發言權UserP1)讀取文件中的數據塊,而寫第三,也許是當地,UserP1和UserP2都可以訪問的位置。然後從該位置讀取文件作爲UserP2並寫入共享2.

如果您有能力以多線程方式執行此操作,則可以讓UserP2在UserP1寫入文件時開始讀取文件。這樣,在開始複製到共享2之前,您將不必完成等待寫入第三個位置的操作。您將遭受第三個位置所需的存儲損失,但是不會因爲讀取整個文件而導致內存損失到內存,也沒有在開始寫入共享2之前首先將整個文件複製到第三位置的時間處罰。