[c#] Closing a file after File.Create

I check to see if a file exists with

if(!File.Exists(myPath))
{
    File.Create(myPath);
}

However, when I go to create a StreamReader with this newly created file, I get an error saying that

The process cannot access the file '[my file path here]' because it is being used by another process.

There isn't a File.Close(myPath) that I can call so that it is closed after being created, so how do I free this resource so that I can open it later in my program?

This question is related to c# file-io

The answer is


File.Create returns a FileStream object that you can call Close() on.


The reason is because a FileStream is returned from your method to create a file. You should return the FileStream into a variable or call the close method directly from it after the File.Create.

It is a best practice to let the using block help you implement the IDispose pattern for a task like this. Perhaps what might work better would be:

if(!File.Exists(myPath)){
   using(FileStream fs = File.Create(myPath))
   using(StreamWriter writer = new StreamWriter(fs)){
      // do your work here
   }
}

File.WriteAllText(file,content)

create write close

File.WriteAllBytes--   type binary

:)


The function returns a FileStream object. So you could use it's return value to open your StreamWriter or close it using the proper method of the object:

File.Create(myPath).Close();