我在应用程序中使用FileUploader控件。我想将文件保存在指定的文件夹中。现在,如果此文件夹不存在,我想先创建它,然后将我的文件保存到此文件夹。如果该文件夹已经存在,则只需将文件保存在其中。
我该怎么做?
我在应用程序中使用FileUploader控件。我想将文件保存在指定的文件夹中。现在,如果此文件夹不存在,我想先创建它,然后将我的文件保存到此文件夹。如果该文件夹已经存在,则只需将文件保存在其中。
我该怎么做?
Answers:
正如其他人所说,使用 System.IO.Directory.CreateDirectory
但是,您不需要首先检查它是否存在。来自文档
除非在路径中指定的目录已经存在或者路径的某些部分无效,否则将创建该目录中指定的所有目录。如果目录已经存在,则此方法不会创建新目录,但会为现有目录返回DirectoryInfo对象。
按照http://forums.asp.net/p/1226236/2209871.aspx使用以下代码:
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));
FileExists
(或任何与C#等效的)异常,以防该函数被设计为抛出一个异常。
Exists
它,它实际上会创建一个新的失败条件。
System.IO.Directory.CreateDirectory
。(而且速度更快,但可能没关系)
只需写这行:
System.IO.Directory.CreateDirectory("my folder");
参考:MSDN上有关Directory.CreateDirectory的文章
当然,您也可以using System.IO;
在源文件的顶部进行写入,然后在Directory.CreateDirectory("my folder");
每次创建文件夹时都进行写入。
Directory.CreateDirectory
解释如何尝试和创建FilePath(如果不存在)
Directory.Exists
说明如何检查FilePath是否存在。但是,您不需要它,因为CreateDirectory会为您检查。
您可以使用以下方法创建路径(如果尚不存在):
using System.IO;
private void CreateIfMissing(string path)
{
bool folderExists = Directory.Exists(Server.MapPath(path));
if (!folderExists)
Directory.CreateDirectory(Server.MapPath(path));
}
if (!folderExists)
不需要检查。
FileExists
异常(或任何在C#中调用的异常)
您可以使用try / catch子句并检查它是否存在:
try
{
if (!Directory.Exists(path))
{
// Try to create the directory.
DirectoryInfo di = Directory.CreateDirectory(path);
}
}
catch (IOException ioex)
{
Console.WriteLine(ioex.Message);
}
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 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");
}
}
如果文件夹没有出现在图像文件夹或其他文件夹下,请使用此代码
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);
string root = @"C:\Temp";
string subdir = @"C:\Temp\Mahesh";
// If directory does not exist, create it.
if (!Directory.Exists(root))
{
Directory.CreateDirectory(root);
}
CreateDirectory也用于创建子目录。您所要做的就是指定将在其中创建此子目录的目录的路径。以下代码段在中创建一个Mahesh子目录C:\Temp directory
。
// Create sub directory
if (!Directory.Exists(subdir))
{
Directory.CreateDirectory(subdir);
}
从多个答案派生/组合而成,对我来说,实现起来就像这样简单:
public void Init()
{
String platypusDir = @"C:\platypus";
CreateDirectoryIfDoesNotExist(platypusDir);
}
private void CreateDirectoryIfDoesNotExist(string dirName)
{
System.IO.Directory.CreateDirectory(dirName);
}