C# 移动锁定目标文件夹中的文件?
我使用C# 移动锁定目标文件夹中的文件?,c#,asp.net,file,file-io,move,C#,Asp.net,File,File Io,Move,我使用File.Move将2GB左右的大文件从一个目录移动到另一个目录。将监视设计文件夹,如果有任何新文件,它将上载到CDN。但是我们遇到了一些部分文件上传到CDN的情况,这意味着,当相同的文件从源目录移动到目标目录时,相应的文件被上传到CDN。因此,我需要知道File.Move是否会锁定文件目标文件夹,直到文件移动完成?您的问题是目标文件夹上的Moonitor 由于您有一个大文件,复制它需要时间,因此发生的情况是: 开始移动文件 监控系统启动并开始上传至CDN 文件已上载 完成文件的移动 一种
File.Move
将2GB左右的大文件从一个目录移动到另一个目录。将监视设计文件夹,如果有任何新文件,它将上载到CDN。但是我们遇到了一些部分文件上传到CDN的情况,这意味着,当相同的文件从源目录移动到目标目录时,相应的文件被上传到CDN。因此,我需要知道File.Move是否会锁定文件目标文件夹,直到文件移动完成?您的问题是目标文件夹上的Moonitor
由于您有一个大文件,复制它需要时间,因此发生的情况是:
一种缓解方法是,假设您的监控系统使用一些扩展来搜索文件—将
MyBigFile.ext
移动到MyBigFile.ext.tmp
。完成后,将其重新命名为MyBigFile.ext
,这样在监视启动时,它将拥有完整的文件要避免部分上传到CDN,您可以做的是在移动它时先将其隐藏,并在完全完成后将其取消隐藏。如果文件仍然隐藏,请让监控工具不要将其传输到CDN
或者您可以将其锁定,以便在流完成之前,其他进程(您的监视工具--CuteFTP)无法访问目标文件
e、 g
我需要弄清楚这个文件。Move,但是如果只有在任何文件被完全移动的情况下才将文件上载到CDN会更好。@GAPS我们使用CuteFTP来监视目标文件夹。因此,在将文件移动到CDN之前,我无法对其进行编程以检查该文件是否正在使用:(嗨,Sri,不确定它是否对您有帮助。您将看到异常类型,您可以尝试使用console应用程序来确保它。@NipunAmbastha他实际上正在使用它。重命名该文件可能是一个选项。让我们试试吧!
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);
}
}