当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《复制文件时如何防止此System.IO.IOException?》经验,为你挑选了1个好方法。

当我运行以下代码来测试复制目录时,我在调用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);
            }
        }
    }
}

Jon Skeet.. 13

File.Create返回打开FileStream- 您需要关闭该流.

只是

using (File.Create(file1)) {}

应该做的伎俩.



1> Jon Skeet..:

File.Create返回打开FileStream- 您需要关闭该流.

只是

using (File.Create(file1)) {}

应该做的伎俩.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有