Ich habe begonnen, ein Problem mit File.Copy
zu begegnen. Dies funktioniert gut für mein Skript zur Datenerstellung und verwaltet Tausende von Dateien ohne Probleme. Mein Problem tritt auf, wenn ich später versuche, temporäre Dateien in meinem Code zu erstellen.File.Copy Nicht autorisierter Zugriff C#
Ich habe das folgende Codebeispiel hinzugefügt, das nicht richtig funktioniert. Ich habe versucht, auf verschiedene Arten zu versuchen, dies ohne Erfolg zu lösen. Ich kopiere einige Benutzerdatendateien, die in einem Verzeichnis auf Laufwerk C erstellt wurden, in einen temporären Ordner in diesem Benutzerdatenordner.
-Code
foreach (string originalFile in OriginalDataFileNames)
{
string tempFile = originalFile;
TempDataFiles.Add(tempFile);
Console.WriteLine("GlobalDataCtrl: Original Data File: " + XWSDataDirectory + "\\" + tempFile);
Console.WriteLine("GlobalDataCtrl: Saved Temp Data File: " + tempPath + "\\" + tempFile);
File.Copy(XWSDataDirectory + "\\" + originalFile, tempPath + "\\" + tempFile);
}
Ausgangsfehler
The program '[6256] XtremeWrestlingSim.vshost.exe' has exited with code -1073741819 (0xc0000005) 'Access violation'.
Jede Hilfe, Dank im Voraus zu schätzen!
LÖSUNG:
FileStream outputFS = null;
FileStream inputFS = null;
outputFS = new FileStream(tempPath + "\\" + tempFile, FileMode.CreateNew, FileAccess.ReadWrite);
using (inputFS = new FileStream(XWSDataDirectory + "\\" + originalFile, FileMode.Open))
{
inputFS.CopyTo(outputFS);
}
outputFS.Close();
inputFS.Close();
Nicht sicher, wie schön formatiert das ist, aber es funktioniert. Ersetzen Sie File.Copy
durch den obigen Code.
schreiben Sie diese Dateien selbst, und dann später, sie zu kopieren versuchen? Es ist möglich, dass Sie nicht irgendwo einen Dateigriff schließen. Verwenden Sie 'using' Anweisungen oder rufen Sie' .Close() 'jedes Mal auf, wenn Sie eine Datei schreiben. –
Mögliches Duplikat von [C# UnauthorizedAccessException in File.Copy] (http://stackoverflow.com/questions/18554108/c-sharp -unauthorizedaccessexception-in-file-copy) – krillgar
Ich Frage, warum Sie eine neue Datei erstellen (File.Create) und kopieren Sie dann eine vorhandene Datei über den Anfang davon (File.Copy). –