Pracowałem nad tym małym kawałkiem kodu, który wydaje się trywialny, ale nadal nie mogę zobaczyć, gdzie jest problem. Moje funkcje robią całkiem prostą rzecz. Otwiera plik, kopiuje jego zawartość, zastępuje ciąg wewnątrz i kopiuje go z powrotem do oryginalnego pliku (proste wyszukiwanie i zamiana w pliku tekstowym). Naprawdę nie wiedziałem, jak to zrobić, gdy dodam linie do oryginalnego pliku, więc po prostu utworzę kopię pliku, (file.temp) skopiuj także kopię zapasową (file.temp), a następnie skasuj oryginał plik (plik) i skopiuj plik file.temp do pliku. Otrzymuję wyjątek podczas usuwania pliku. Oto przykładowy kod:System.IO.IOException: plik używany przez inny proces
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;
}`
i związanym z wyjątkiem
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)
Zwykle błędy te pochodzą z niezamkniętych strumieni plików, ale już załatwione, że. Sądzę, że zapomniałem o ważnym kroku, ale nie wiem, gdzie. Bardzo dziękuję za pomoc,
spróbuj ustawić obiekt FileInfo przeszły do metody do wartości null. – TheVillageIdiot