我在我的应用程序中使用FileUploader控件。我想保存一个文件到指定的文件夹。如果这个文件夹不存在,我想先创建它,然后将我的文件保存到这个文件夹。如果文件夹已经存在,那么只需将文件保存在其中。

我该怎么做呢?


当前回答

如果该文件夹不存在,该方法将创建该文件夹,如果存在则不执行任何操作:

Directory.CreateDirectory(path);

其他回答

下面的代码是我使用的最好的代码行,如果不存在,将创建目录。

System.IO.Directory.CreateDirectory(HttpContext.Current.Server.MapPath("~/temp/"));

如果目录已经存在,此方法不会创建新目录,但会返回现有目录的DirectoryInfo对象。>

目录中。CreateDirectory解释了如果FilePath不存在,如何尝试创建FilePath。

目录中。Exists命令用于检查FilePath是否存在。但是,您不需要这样做,因为CreateDirectory将为您检查它。

使用System.IO.Directory.CreateDirectory。


据该官员说。NET"文档,你不需要先检查它是否存在。

系统。io >目录>目录。CreateDirectory path中指定的任何和所有目录都将被创建,除非它们已经存在或path的某些部分无效。如果目录已经存在,此方法不会创建新目录,但会返回现有目录的DirectoryInfo对象。         — learn.microsoft.com/dotnet/api/


一种奇特的方法是使用您想要的方法扩展FileUpload。

添加:

public static class FileUploadExtension
{
    public static void SaveAs(this FileUpload, string destination, bool autoCreateDirectory) { 

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

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

        file.SaveAs(destination);
    }
}

然后使用它:

FileUpload file;
...
file.SaveAs(path,true);

如果该文件夹不存在,该方法将创建该文件夹,如果存在则不执行任何操作:

Directory.CreateDirectory(path);