Я только что загрузил файл в папку wwwroot/files моего проекта. Что я намерен сделать, так это прочитать файл сразу после его загрузки. Код, который я использовал для загрузки файла, работает нормально, но код для чтения файла выдает следующее исключение: При обработке запроса возникло необработанное исключение. IOException: процесс не может получить доступ к файлу «campuses.sql», так как он используется другим процессом. Campuses.sql — это файл, который я пытаюсь загрузить и прочитать. Ниже приведен мой код для загрузки и чтения файла.
public IActionResult Institution(IFormFile InstitutionFile)
{
if(InstitutionFile != null)
{
var fileName = Path.Combine(he.WebRootPath + "/files/", Path.GetFileName(InstitutionFile.FileName));
InstitutionFile.CopyTo(new FileStream(fileName, FileMode.Create));
//Everything runs fine till here
int counter = 0;
string line;
// Read the file and display it line by line.
System.IO.StreamReader file =
new System.IO.StreamReader(fileName);
while ((line = file.ReadLine()) != null)
{
System.Console.WriteLine(line);
counter++;
}
file.Close();
System.Console.ReadLine();
}
return RedirectToAction("Index", "Institutions");
}
Итак: 1. Я подозреваю, что это процесс загрузки, который все еще использует файл. Как я могу остановить процесс с помощью файла, чтобы я мог его прочитать?
- Есть ли другой способ, который может помочь мне обойти это?
Я намерен читать данные из файла .csv и вставлять записи в базу данных в долгосрочной перспективе.
Спасибо!
FileStream
и не удаляете его (на самом деле вы не удаляете ни один из ваших потоков). Вы всегда должны удалять экземпляры, реализующиеIDisposable
, чтобы высвободить неуправляемые ресурсы. Проверка этого ответа - person IPValverde   schedule 01.03.2018