Я работаю над этим небольшим фрагментом кода, который кажется тривиальным, но все же я не могу понять, где проблема. Мои функции делают довольно простую вещь. Открывает файл, копирует его содержимое, заменяет строку внутри и копирует ее обратно в исходный файл (простой поиск и замену внутри текстового файла). Я действительно не знал, как это сделать, добавляя строки к исходному файлу, поэтому я просто создаю копию файла (file.temp), копируя также резервную копию (file.temp), затем удаляю оригинал файл (файл) и скопируйте файл file.temp в файл. Я получаю исключение при удалении файла. Вот пример код:System.IO.IOException: файл, используемый другим процессом
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;
}`
И родственное исключение
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)
Обычно эти ошибки происходят из незакрытых потоков файлов, но я позаботилась об этом. Наверное, я забыл важный шаг, но не могу понять, где. Большое спасибо за вашу помощь,
попробуйте установить объект FileInfo прошел к методу null. – TheVillageIdiot