Как мне предотвратить это исключение System.IO.IOException при копировании файла?
-
06-07-2019 - |
Вопрос
Когда я запускаю следующий код для проверки копирования каталога, я получаю исключение System.IO.IOException при вызове метода FileInfo.CopyTo.Сообщение об ошибке выглядит следующим образом:"Процесс не может получить доступ к файлу"C:\CopyDirectoryTest1 emp.txt", поскольку он используется другим процессом".
Похоже, что для file1 ("C:\CopyDirectoryTest1 emp.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)) {}
должно сработать.
Не связан с StackOverflow