我用File.Move
到2GB左右从一个目录到另一个directory.The desitnation文件夹监控移动大文件,如果有任何新的文件,它会被上传到CDN。 但是,我们经历了一些局部的文件上传到CDN,这意味着,相应的文件已被上传到CDN而同样的文件是从源移动到目标目录。 所以,我需要知道是否File.Move锁定该文件的目标文件夹,直到文件的结束感动?
Answer 1:
你能做些什么,以避免局部上传到CDN是移动时它先隐藏和取消隐藏它一旦它的完全做到。 并有文件是否仍隐藏在监控工具 而不要把它传递到CDN。
或者,你可以锁定它,这样其他进程(这是你的监控工具 - CuteFTP的),直到流已经完成了无法访问的目标文件。
如
static void Main(string[] args)
{
string sourcePath = "mytext.txt";
string destPath = @"dest\mytext.txt";
using (FileStream sourceStream = new FileStream(sourcePath, FileMode.Open))
{
using (FileStream destStream = new FileStream(destPath, FileMode.Create))
{
destStream.Lock(0, sourceStream.Length);
sourceStream.CopyTo(destStream);
}
}
if (File.Exists(sourcePath))
{
File.Delete(sourcePath);
}
}
Answer 2:
你的问题是在目标文件夹的moonitoring。
既然你有一个大的文件时,它需要时间来复制它,发生了什么是:
- 你开始移动文件
- 监控系统起作用并开始上传到CDN
- 文件被上传parialy
- 您完成移动文件。
这其中的一个缓解的,假设你的监控系统寻找一些extensation文件-移动MyBigFile.ext
到MyBigFile.ext.tmp
。 完成后,其重命名为MyBigFile.ext
,所以在监控踢时,将拥有完整的文件
文章来源: File.Move locks file in destination folder?