如何复制文件时,我阻止这种System.IO.IOException?(How do I preve

2019-10-21 05:33发布

当我运行下面的代码来测试复制的目录,我得到一个当被称为fileInfo.CopyTo方法System.IO.IOException。 该错误消息是:“过程不能访问该文件‘C:\ CopyDirectoryTest1 \ TEMP.TXT’。因为它正由另一个进程”

好像有文件1上的锁(“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);
            }
        }
    }
}

Answer 1:

File.Create返回一个开放FileStream -你需要关闭该流。

只是

using (File.Create(file1)) {}

应该做的伎俩。



文章来源: How do I prevent this System.IO.IOException when copying a file?