Coder Perfect

How do I create directory if it doesn’t exist to create a file?

Problem

I have some code that fails if the directory does not exist.

System.IO.File.WriteAllText(filePath, content);

Is it possible to verify if the directory leading to the new file doesn’t exist and, if it doesn’t, create it before creating the new file in one line (or a few lines)?

I’m working with.NET 3.5.

Asked by Diskdrive

Solution #1

(filePath) -> new FileInfo(filePath) -> new FileInfo(filePath) Directory. Before writing to the file, call Create().

System.IO.FileInfo file = new System.IO.FileInfo(filePath);
file.Directory.Create(); // If the directory already exists, this method does nothing.
System.IO.File.WriteAllText(file.FullName, content);

Answered by Don

Solution #2

You can use the code below.

  DirectoryInfo di = Directory.CreateDirectory(path);

Answered by Ram

Solution #3

As @hitec mentioned, you must confirm that you have the proper permissions; if you do, you may use this line to verify the directory’s existence:

Directory.CreateDirectory(Path.GetDirectoryName(filePath))

Answered by willvv

Solution #4

Create the following extension to the native FileInfo class for an elegant approach to relocate your file to an empty directory:

public static class FileInfoExtension
{
    //second parameter is need to avoid collision with native MoveTo
    public static void MoveTo(this FileInfo file, string destination, bool autoCreateDirectory) { 

        if (autoCreateDirectory)
        {
            var destinationDirectory = new DirectoryInfo(Path.GetDirectoryName(destination));

            if (!destinationDirectory.Exists)
                destinationDirectory.Create();
        }

        file.MoveTo(destination);
    }
}

Then utilize the MoveTo extension, which is completely new:

 using <namespace of FileInfoExtension>;
 ...
 new FileInfo("some path")
     .MoveTo("target path",true);

Check out the documentation for the Methods extension.

Answered by MiguelSlv

Solution #5

You can make use of File. Exists to see if the file already exists and if not, create it with File. If necessary, create. Check to see if you have permission to create files at that location.

You can securely write to the file after you’re sure it exists. However, as a precaution, you should put your code in a try…catch block and catch any exceptions that function might throw if things don’t go as intended.

Additional information on the fundamentals of file I/O.

Answered by hitec

Post is based on https://stackoverflow.com/questions/2955402/how-do-i-create-directory-if-it-doesnt-exist-to-create-a-file