繁体   English   中英

复制文件时如何防止此System.IO.IOException?

[英]How do I prevent this System.IO.IOException when copying a file?

当我运行以下代码来测试复制目录时,在调用fileInfo.CopyTo方法时出现System.IO.IOException。 错误消息是:“该进程无法访问文件'C:\\ CopyDirectoryTest1 \\ temp.txt',因为它正在被另一个进程使用。”

似乎在file1(“ C:\\ CopyDirectoryTest1 \\ temp.txt”)上有一个锁,该锁是在发生错误的几行上方创建的,但是我不知道如何释放它。 有任何想法吗?

using System;
using System.IO;

namespace TempConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            string folder1 = @"C:\CopyDirectoryTest1";
            string folder2 = @"C:\CopyDirectoryTest2";
            string file1 = Path.Combine(folder1, "temp.txt");

            if (Directory.Exists(folder1))
                Directory.Delete(folder1, true);
            if (Directory.Exists(folder2))
                Directory.Delete(folder2, true);

            Directory.CreateDirectory(folder1);
            Directory.CreateDirectory(folder2);
            File.Create(file1);

            DirectoryInfo folder1Info = new DirectoryInfo(folder1);
            DirectoryInfo folder2Info = new DirectoryInfo(folder2);

            foreach (FileInfo fileInfo in folder1Info.GetFiles())
            {
                string fileName = fileInfo.Name;
                string targetFilePath = Path.Combine(folder2Info.FullName, fileName);
                fileInfo.CopyTo(targetFilePath, true);
            }
        }
    }
}

File.Create返回一个打开的FileStream您需要关闭该流。

只是

using (File.Create(file1)) {}

应该可以。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM