我刚刚将文件上传到我项目的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文件中读取数据,并从长远来看将记录插入数据库。
谢谢!
答案 0 :(得分:0)
从InstitutionFile
而不是物理文件中读取。
同时将FileStream
放入using
块,以便释放文件。
var fileName = Path.Combine("" + "/files/", Path.GetFileName(InstitutionFile.FileName));
using (var fileStream = new FileStream(fileName, FileMode.Create))
InstitutionFile.CopyTo(fileStream);
var st = new MemoryStream();
InstitutionFile.CopyTo(st);
var content = Encoding.ASCII.GetString(st.ToArray());