首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >File.Move在目标文件夹中锁定文件?

问File.Move在目标文件夹中锁定文件?
EN

Stack Overflow用户
提问于 2013-06-13 12:34:14
回答 2查看 2.4K关注 0票数 1

我使用File.Move将2GB左右的大型文件从一个目录移动到另一个directory.The干燥器文件夹,如果有任何新文件,它将被上传到CDN。但是,我们经历了一些部分文件上传到CDN,这意味着,相应的文件被上传到CDN,而同一文件正在从源目录移动到目标目录。因此,我需要知道File.Move是否在文件完成移动之前锁定文件目标文件夹?

EN

回答 2

Stack Overflow用户

发布于 2013-06-13 12:45:00

您的问题是目标文件夹上的月光监视。

由于您有一个很大的文件,复制它需要时间,所以所发生的事情是:

  1. 你开始移动文件
  2. 监控系统启动并开始上传到CDN。
  3. 文件已上载
  4. 你把文件移完。

这方面的一个缓解措施是,假设您的监视系统搜索具有某些扩展性的文件--将MyBigFile.ext迁移到MyBigFile.ext.tmp。完成后,将其重命名为MyBigFile.ext,因此当监视启动时,它将拥有完整的文件

票数 1
EN

Stack Overflow用户

发布于 2013-06-13 12:45:41

要避免部分上传到CDN,您可以做的是在移动CDN时先隐藏它,并在完全完成后将其取消。如果文件仍然是隐藏的,那么让监控工具不要将它传输到CDN。

或者,您可以将其锁定,以便其他进程(这是您的监视工具- CuteFTP)在流已经完成之前无法访问目标文件。

例如:

代码语言:javascript
复制
    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);
        }
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17087181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档