我使用File.Move将2GB左右的大型文件从一个目录移动到另一个directory.The干燥器文件夹,如果有任何新文件,它将被上传到CDN。但是,我们经历了一些部分文件上传到CDN,这意味着,相应的文件被上传到CDN,而同一文件正在从源目录移动到目标目录。因此,我需要知道File.Move是否在文件完成移动之前锁定文件目标文件夹?
发布于 2013-06-13 12:45:00
您的问题是目标文件夹上的月光监视。
由于您有一个很大的文件,复制它需要时间,所以所发生的事情是:
这方面的一个缓解措施是,假设您的监视系统搜索具有某些扩展性的文件--将MyBigFile.ext迁移到MyBigFile.ext.tmp。完成后,将其重命名为MyBigFile.ext,因此当监视启动时,它将拥有完整的文件
发布于 2013-06-13 12:45:41
要避免部分上传到CDN,您可以做的是在移动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);
}
}https://stackoverflow.com/questions/17087181
复制相似问题