Wie verhindere ich diese System.IO.IOException wenn das Kopieren einer Datei?
-
06-07-2019 - |
Frage
Wenn ich den folgenden Code ausführen, ein Verzeichnis zu testen, kopieren, erhalte ich ein System.IO.IOException wenn FileInfo.CopyTo Methode aufgerufen wird. Die Fehlermeldung lautet: „Der Prozess kann nicht die Datei‚C: \ CopyDirectoryTest1 \ temp.txt‘zugreifen kann. Weil es von einem anderen Prozess verwendet wird“
Es scheint, als gäbe es eine Sperre für file1 ( „C: \ CopyDirectoryTest1 \ temp.txt“), die einige Zeilen weiter oben, wo der Fehler erzeugt wird, auftritt, aber ich weiß nicht, wie dies zu lösen, wenn so. Irgendwelche Ideen?
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);
}
}
}
}
Lösung
File.Create
gibt eine offene FileStream
-. Sie müssen diesen Strom schließen
Just
using (File.Create(file1)) {}
sollte es tun.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow