답변:
using System.IO;
...
Directory.CreateDirectory(@"C:\MP_Upload");
Directory.CreateDirectory 는 원하는대로 정확히 수행합니다. 아직 존재하지 않는 경우 디렉터리를 만듭니다. 먼저 명시적인 확인을 할 필요가 없습니다.
이미 존재하거나 경로의 일부가 유효하지 않은 경우가 아니면 경로에 지정된 모든 디렉토리가 작성됩니다. path 매개 변수는 파일 경로가 아닌 디렉토리 경로를 지정합니다. 디렉토리가 이미있는 경우이 메서드는 아무 작업도 수행하지 않습니다.
(이것은 또한 필요한 경우 경로를 따라 모든 디렉토리 가 생성됨을 의미합니다 . 아직 존재하지 CreateDirectory(@"C:\a\b\c\d")
않더라도 충분 C:\a
합니다.)
하지만 디렉토리 선택에 대해주의 할 점을 추가하겠습니다. 시스템 파티션 루트 바로 아래에 폴더를 만드는 C:\
것은 눈살을 찌푸립니다. 사용자가 폴더를 선택 %APPDATA%
하거나 또는 %LOCALAPPDATA%
대신 폴더를 생성하도록하십시오 (이 경우 Environment.GetFolderPath 사용 ). Environment.SpecialFolder 열거 형 의 MSDN 페이지 에는 특수 운영 체제 폴더 및 용도 목록이 포함되어 있습니다.
EnsureDirectoryExists
하면 방법을 찾기가 더 어려워 졌을 것입니다.
Directory.CreateDirectory
폴더 이름이 기존 파일 이름과 일치하면 발생합니다.
if(!System.IO.Directory.Exists(@"c:\mp_upload"))
{
System.IO.Directory.CreateDirectory(@"c:\mp_upload");
}
using System;
using System.IO;
using System.Windows.Forms;
namespace DirCombination
{
public partial class DirCombination : Form
{
private const string _Path = @"D:/folder1/foler2/folfer3/folder4/file.txt";
private string _finalPath = null;
private string _error = null;
public DirCombination()
{
InitializeComponent();
if (!FSParse(_Path))
Console.WriteLine(_error);
else
Console.WriteLine(_finalPath);
}
private bool FSParse(string path)
{
try
{
string[] Splited = path.Replace(@"//", @"/").Replace(@"\\", @"/").Replace(@"\", "/").Split(':');
string NewPath = Splited[0] + ":";
if (Directory.Exists(NewPath))
{
string[] Paths = Splited[1].Substring(1).Split('/');
for (int i = 0; i < Paths.Length - 1; i++)
{
NewPath += "/";
if (!string.IsNullOrEmpty(Paths[i]))
{
NewPath += Paths[i];
if (!Directory.Exists(NewPath))
Directory.CreateDirectory(NewPath);
}
}
if (!string.IsNullOrEmpty(Paths[Paths.Length - 1]))
{
NewPath += "/" + Paths[Paths.Length - 1];
if (!File.Exists(NewPath))
File.Create(NewPath);
}
_finalPath = NewPath;
return true;
}
else
{
_error = "Drive is not exists!";
return false;
}
}
catch (Exception ex)
{
_error = ex.Message;
return false;
}
}
}
}
String path = Server.MapPath("~/MP_Upload/");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
시도해 볼 수 있습니다 ..
using System.IO;string path = "C:\MP_Upload";if(!Directory.Exists(path)){
Directory.CreateDirectory(path);}