Come posso evitare questa System.IO.IOException durante la copia di un file?
-
06-07-2019 - |
Domanda
Quando eseguo il seguente codice per provare a copiare una directory, ottengo un'eccezione System.IO.IOException quando viene chiamato il metodo fileInfo.CopyTo. Il messaggio di errore è: " Il processo non può accedere al file "C: \ CopyDirectoryTest1 \ temp.txt" perché è utilizzato da un altro processo. & Quot;
Sembra che ci sia un blocco su file1 (" C: \ CopyDirectoryTest1 \ temp.txt ") che viene creato alcune righe sopra dove si verifica l'errore, ma non so come rilasciarlo in tal caso. Qualche idea?
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);
}
}
}
}
Soluzione
File.Create
restituisce un FileStream
aperto - devi chiudere quel flusso.
Proprio
using (File.Create(file1)) {}
dovrebbe fare il trucco.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow