Cannot read file in uploaded path(used by another process)

I upload a csv file to AppData folder in project solution and read the content with the code below:

using (var fs = new FileStream(Path.Combine(uploadPath, name), chunk == 0 ? FileMode.Create : FileMode.Append))
{
    var buffer = new byte[fileUpload.InputStream.Length];
    fileUpload.InputStream.Read(buffer, 0, buffer.Length);
    fs.Write(buffer, 0, buffer.Length);

    var reader = new StreamReader(System.IO.File.OpenRead(fs.Name));// I check path and file itself in AppData folder. its ok
    List<string> listA = new List<string>();
    List<string> listB = new List<string>();
    while (!reader.EndOfStream)
    {            
        var line = reader.ReadLine();
        var values = line.Split(';');
    }

But it throws IOException with message:

The process cannot access the file 'c:\path\App_Data\o_1amtdiagc18991ndq1c1k1c2v1bama.csv' because it is being used by another process.

I couldnt get it how and why it's being used I created this file from original uploaded file with unique name..

Jon Skeet
people
quotationmark

I couldnt get it how and why its being used

Because you've not closed the stream that's writing to it:

using (var fs = new FileStream(Path.Combine(uploadPath, name), ...)

I would suggest you write the file, close the using statement so the handle can be released, then read it:

string fullName = Path.Combine(uploadPath, name);
using (var fs = ...)
{
    // Code as before, but ideally taking note of the return value
    // of Stream.Read, that you're currently ignoring. Consider
    // using Stream.CopyTo
}
// Now the file will be closed
using (var reader = File.OpenText(fullName))
{
    // Read here
}

people

See more on this question at Stackoverflow