내 응용 프로그램에서 FileUploader 컨트롤을 사용합니다. 지정된 폴더에 파일을 저장하고 싶습니다. 이제이 폴더가없는 경우 먼저 폴더를 만든 다음 파일을이 폴더에 저장하고 싶습니다. 폴더가 이미 존재하면 파일을 저장하십시오.
어떻게해야합니까?
내 응용 프로그램에서 FileUploader 컨트롤을 사용합니다. 지정된 폴더에 파일을 저장하고 싶습니다. 이제이 폴더가없는 경우 먼저 폴더를 만든 다음 파일을이 폴더에 저장하고 싶습니다. 폴더가 이미 존재하면 파일을 저장하십시오.
어떻게해야합니까?
답변:
다른 사람들이 말했듯이 사용 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);
}