File.Move锁定在目标文件夹中的文件?(File.Move locks file in des

2019-10-18 06:48发布

我用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。

既然你有一个大的文件时,它需要时间来复制它,发生了什么是:

  1. 你开始移动文件
  2. 监控系统起作用并开始上传到CDN
  3. 文件被上传parialy
  4. 您完成移动文件。

这其中的一个缓解的,假设你的监控系统寻找一些extensation文件-移动MyBigFile.extMyBigFile.ext.tmp 。 完成后,其重命名为MyBigFile.ext ,所以在监控踢时,将拥有完整的文件



文章来源: File.Move locks file in destination folder?