繁体   English   中英

复制文件边缘案例

[英]Copy File Edge Case

我有一个在UserX下运行的应用程序。 我也有2个网络路径指向同一Share的子文件夹,例如:

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

UserX在P1和P2上均没有权限(这意味着他无法在此处读写),但是我确实有UserP1和UserP2。 UserP1只能读/写P1。 UserP2只能读/写P2。

现在如何将文件从一个文件夹复制到另一个文件夹?

到目前为止,我坚持使用File.Copy和一些模拟功能,但没有取得积极的结果...我得到的只是“访问被拒绝” ...

细节:

  • 复制的文件可以达到20GB
  • 网络路径可能指向“ \\ localhost \\ c $”
  • 这是一个“服务器端”应用程序,这意味着每秒将处理数百个请求...由于明显的扩展问题,将文件读取到内存,切换凭据,写入将被视为万不得已...

使用指定的约束,您没有太多选择。

比“读取内存/切换凭据/写入”更好的选择是执行以下操作:

批量读取文件(例如,从Share 1作为UserP1从Share 1中读取),同时写入UserP1和UserP2都可以访问的第三个(也许是本地)位置。 然后从该位置读取文件作为UserP2并写入共享2。

如果您有能力以多线程方式执行此操作,则可以让UserP2在UserP1写入文件时开始读取文件。 这样,在开始复制到共享2之前,您不必等待到第三个位置的写操作就完成了。您将招致第三个位置所需的存储空间的损失,但是不会读取整个文件内存,也不会在开始写入Share 2之前先将整个文件复制到第三个位置所花费的时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM