Как предотвратить это исключение System.IO.IOException при копировании файла? - PullRequest
1 голос
/ 06 ноября 2008

Когда я запускаю следующий код для проверки копирования каталога, я получаю исключение System.IO.IOException при вызове метода fileInfo.CopyTo. Сообщение об ошибке: «Процесс не может получить доступ к файлу« 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);
            }
        }
    }
}

1 Ответ

13 голосов
/ 06 ноября 2008

File.Create возвращает открытие FileStream - вам нужно закрыть этот поток.

Just

using (File.Create(file1)) {}

должен сделать трюк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...