Ich habe an diesem kleinen Stück Code gearbeitet, der trivial erscheint, aber immer noch, ich kann nicht wirklich sehen, wo das Problem ist. Meine Funktionen machen eine ziemlich einfache Sache. Öffnet eine Datei, kopiert ihren Inhalt, ersetzt eine Zeichenkette und kopiert sie zurück in die Originaldatei (einfaches Suchen und Ersetzen in einer Textdatei). Ich wusste nicht wirklich, wie das geht, da ich der Originaldatei Zeilen hinzufüge, also erstelle ich einfach eine Kopie der Datei (file.temp) kopiere auch eine Sicherungskopie (file.temp) und lösche dann das Original Datei (Datei) und kopieren Sie die Datei.temp in Datei. Ich bekomme eine Ausnahme beim Löschen der Datei. Hier ist der Beispielcode:System.IO.IOException: Datei von einem anderen Prozess
private static bool modifyFile(FileInfo file, string extractedMethod, string modifiedMethod)
{
Boolean result = false;
FileStream fs = new FileStream(file.FullName + ".tmp", FileMode.Create, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
StreamReader streamreader = file.OpenText();
String originalPath = file.FullName;
string input = streamreader.ReadToEnd();
Console.WriteLine("input : {0}", input);
String tempString = input.Replace(extractedMethod, modifiedMethod);
Console.WriteLine("replaced String {0}", tempString);
try
{
sw.Write(tempString);
sw.Flush();
sw.Close();
sw.Dispose();
fs.Close();
fs.Dispose();
streamreader.Close();
streamreader.Dispose();
File.Copy(originalPath, originalPath + ".old", true);
FileInfo newFile = new FileInfo(originalPath + ".tmp");
File.Delete(originalPath);
File.Copy(fs., originalPath, true);
result = true;
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
return result;
}`
und die damit verbundene Ausnahme
System.IO.IOException: The process cannot access the file 'E:\mypath\myFile.cs' because it is being used by another process.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.File.Delete(String path)
at callingMethod.modifyFile(FileInfo file, String extractedMethod, String modifiedMethod)
diese Fehler kommen aus unverschlossenen Dateiströme Normalerweise, aber ich habe davon gesorgt. Ich denke, ich habe einen wichtigen Schritt vergessen, kann aber nicht herausfinden, wo. Vielen Dank für Ihre Hilfe,
versuchen Fileinfo-Objekt übergeben Einstellung zur Methode auf Null setzen. – TheVillageIdiot