如果文件夹不存在,则创建它

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

我怎么能这么做?

1051059 次浏览

按照如何使用文件上传服务器控件动态创建文件夹?使用下面的代码:

string subPath ="ImagesPath"; // Your code goes here
bool exists = System.IO.Directory.Exists(Server.MapPath(subPath));
if(!exists)System.IO.Directory.CreateDirectory(Server.MapPath(subPath));

Directory.CreateDirectory解释了如果FilePath不存在,如何尝试和创建它。

Directory.Exists解释了如何检查FilePath是否存在。但是,您不需要它,因为CreateDirectory会为您检查它。

您可以使用try/catch子句并检查它是否存在:

  try{if (!Directory.Exists(path)){// Try to create the directory.DirectoryInfo di = Directory.CreateDirectory(path);}}catch (IOException ioex){Console.WriteLine(ioex.Message);}

如果路径还不存在,您可以使用如下方法创建路径:

using System.IO;
private void CreateIfMissing(string path){bool folderExists = Directory.Exists(Server.MapPath(path));if (!folderExists)Directory.CreateDirectory(Server.MapPath(path));}
using System.IO
if (!Directory.Exists(yourDirectory))Directory.CreateDirectory(yourDirectory);
使用System.IO.Directory.CreateDirectory

根据官方的". NET"文档,你不需要先检查它是否存在。

System.io>目录>目录。创建目录

创建path中指定的所有目录,除非它们已经存在或path的某些部分无效。如果目录已经存在,此方法不会创建新目录,但会为现有目录返回一个DirectoryInfo对象。

        -learn.microsoft.com/dotnet/api/

只需写下这一行:

System.IO.Directory.CreateDirectory("my folder");
  • 如果文件夹为还不存在,则为创建
  • 如果文件夹已经存在,该行将是忽略

参考:关于MSDN上Directory. CreateDirectory的文章

当然,您也可以在源文件的顶部写using System.IO;,然后每次要创建文件夹时只写Directory.CreateDirectory("my folder");

string root = @"C:\Temp";
string subdir = @"C:\Temp\Mahesh";
// If directory does not exist, create it.
if (!Directory.Exists(root)){
Directory.CreateDirectory(root);
}

CreateDirectory也用于创建子目录。您所要做的就是指定将在其中创建此子目录的目录的路径。以下代码片段在C:\Temp directory中创建了一个Mahesh子目录。

// Create sub directory
if (!Directory.Exists(subdir)){
Directory.CreateDirectory(subdir);
}

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

Directory.CreateDirectory(path);

使用下面的代码。我使用此代码进行文件复制和创建新文件夹。

string fileToCopy = "filelocation\\file_name.txt";String server = Environment.UserName;string newLocation = "C:\\Users\\" + server + "\\Pictures\\Tenders\\file_name.txt";string folderLocation = "C:\\Users\\" + server + "\\Pictures\\Tenders\\";bool exists = System.IO.Directory.Exists(folderLocation);
if (!exists){System.IO.Directory.CreateDirectory(folderLocation);if (System.IO.File.Exists(fileToCopy)){MessageBox.Show("file copied");System.IO.File.Copy(fileToCopy, newLocation, true);}else{MessageBox.Show("no such files");}}

从多个答案中派生/组合,对我来说实现它就像这样简单:

public void Init(){String platypusDir = @"C:\platypus";CreateDirectoryIfDoesNotExist(platypusDir);}
private void CreateDirectoryIfDoesNotExist(string dirName){System.IO.Directory.CreateDirectory(dirName);}
if (!Directory.Exists(Path.GetDirectoryName(fileName))){Directory.CreateDirectory(Path.GetDirectoryName(fileName));}

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

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

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

创建一个新文件夹,给定父文件夹的路径:

        string pathToNewFolder = System.IO.Path.Combine(parentFolderPath, "NewSubFolder");DirectoryInfo directory = Directory.CreateDirectory(pathToNewFolder);// Will create if does not already exist (otherwise will ignore)
  • 给定的新文件夹路径
  • 目录信息变量,因此您可以继续随心所欲地操作它。

如果文件夹未显示在图像文件夹或其他文件夹下,请使用此代码

string subPath = HttpContext.Current.Server.MapPath(@"~/Images/RequisitionBarCode/");
bool exists = System.IO.Directory.Exists(subPath);if(!exists)System.IO.Directory.CreateDirectory(subPath);
string path = HttpContext.Current.Server.MapPath(@"~/Images/RequisitionBarCode/" + OrderId + ".png");

一种奇特的方法是用你想要的方法扩展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);