文件.GetFiles或File.EnumerateFiles锁定文件
本文关键字:文件 锁定 EnumerateFiles GetFiles File | 更新日期: 2023-09-27 18:04:15
代码正常运行:
File.Copy(file, Path.Combine(destinationFolder, file), true);
这行不通:
foreach (string file in Directory.GetFiles(sourceFolder))
{
File.Copy(file, Path.Combine(destinationFolder, file), true);
}
在第一个文件中给出一个异常:
进程无法访问文件"C:'Users'Ricardo'Desktop'Palomas'IMG_20130215_134854.jpg",因为该文件正在被其他进程使用。
为什么?看起来像Directory。GetFiles或Directory。EnumerateFiles锁定文件
foreach中的一个简单错误。
我想复制粘贴到同一个地方。
修复:
foreach (string file in Directory.EnumerateFiles(sourceFolder))
{
File.Copy(file, Path.Combine(destinationFolder, Path.GetFileName(file)), true);
}
有同样的问题-正在做目录。GetFiles在一个文件夹上,然后传递每个文件的路径/名称到一个调用SQL Server来批量加载文件,并得到文件被另一个进程错误锁定。看起来像Directory。GetFiles暂时锁定文件——释放锁的速度取决于文件夹所在机器上的操作系统有多快。我觉得开锁可能有点晚了。在我的应用程序中,我在目录之后放置了30秒的暂停{Thread.Sleep(30000)}。