此代码有效:
File.Copy(file, Path.Combine(destinationFolder, file), true);
这不起作用:
foreach (string file in Directory.GetFiles(sourceFolder))
{
File.Copy(file, Path.Combine(destinationFolder, file), true);
}
它在第一个文件中给出了一个exepction:
该进程无法访问文件'C:\ Users \ Ricardo \ Desktop \ Palomas \ IMG_20130215_134854.jpg',因为它正由另一个进程使用。
为什么呢? 看起来像Directory.GetFiles或Directory.EnumerateFiles锁定文件
答案 0 :(得分:2)
foreach中的一个简单错误。
我试图复制并粘贴到同一个地方。
修正了这种方式:
foreach (string file in Directory.EnumerateFiles(sourceFolder))
{
File.Copy(file, Path.Combine(destinationFolder, Path.GetFileName(file)), true);
}
答案 1 :(得分:1)
有同样的问题 - 正在对文件夹执行Directory.GetFiles,然后将每个文件路径/名称传递给SQL Server调用以批量加载文件,并且由于另一个进程错误而使文件被锁定。它看起来像Directory.GetFiles暂时锁定文件 - 锁的释放速度取决于操作系统在文件夹所在的机器上的速度。我认为释放锁可能会略微落后。在我的应用程序中,我在Directory.GetFiles语句之后放置了30秒的暂停{Thread.Sleep(30000)},然后再解决了我的问题。