다음 파일을 작성 (또는 덮어 쓰기)하고 싶다고 상상해보십시오. C:\Temp\Bar\Foo\Test.txt
은 Using File.Create (..) 방법이 그것을 할 수 있습니다.
그러나 다음 폴더 중 하나가없는 경우 (위의 예제 경로에서)
- 온도
- 바
- 푸
그런 다음 DirectoryNotFoundException이 발생합니다.
.. 경로가 주어지면 해당 경로에 대한 파일 ..을 만드는 데 필요한 모든 폴더를 어떻게 재귀 적으로 만들 수 있습니까? Temp 또는 Bar 폴더가 있지만 Foo가 없으면 …도 생성됩니다.
간단하게하기 위해 보안 문제가 없다고 가정합니다.
답변
DirectoryInfo di = Directory.CreateDirectory(path);
Console.WriteLine("The directory was created successfully at {0}.",
Directory.GetCreationTime(path));
참조 이 MSDN 페이지를 .
그것이 도움이 되길 바랍니다!
답변
다른 답변에서 언급 된 내용을 요약하려면 :
//path = @"C:\Temp\Bar\Foo\Test.txt";
Directory.CreateDirectory(Path.GetDirectoryName(path));
Directory.CreateDirectory
디렉토리를 재귀 적으로 작성하며 디렉토리가 이미 존재하는 경우 오류없이 리턴됩니다.
에 파일이 Foo
있는 경우C:\Temp\Bar\Foo
예외에 있으면 예외가 발생합니다.
답변
파일을 작성하기 전에 Directory.CreateDirectory 를 사용하십시오 . 폴더가 재귀 적으로 만들어집니다.
답변
. 경로를 지정하면 파일을 만드는 데 필요한 모든 폴더를 재귀 적으로 만드는 방법은 무엇입니까?
path로 지정된 모든 디렉토리 및 서브 디렉토리를 작성합니다.
Directory.CreateDirectory(path);
그러면 파일을 만들 수 있습니다.
답변
경로의 두 부분 (디렉토리 및 파일 이름)을 확인하고 존재하지 않는 경우이를 작성해야합니다.
File.Exists
및 사용 하여 Directory.Exists
존재하는지 확인 하십시오 . Directory.CreateDirectory
전체 경로를 만들므로 디렉토리가 존재하지 않으면 한 번만 호출하면 파일을 만들 수 있습니다.
답변
Directory.CreateDirectory를 사용해야합니다.
답변
Directory.CreateDirectory ()를 원합니다.
다음은 내가 사용하는 클래스 (C #으로 변환)에 소스 디렉토리와 대상을 전달하면 해당 디렉토리의 모든 파일과 하위 폴더가 대상으로 복사됩니다.
using System.IO;
public class copyTemplateFiles
{
public static bool Copy(string Source, string destination)
{
try {
string[] Files = null;
if (destination[destination.Length - 1] != Path.DirectorySeparatorChar) {
destination += Path.DirectorySeparatorChar;
}
if (!Directory.Exists(destination)) {
Directory.CreateDirectory(destination);
}
Files = Directory.GetFileSystemEntries(Source);
foreach (string Element in Files) {
// Sub directories
if (Directory.Exists(Element)) {
copyDirectory(Element, destination + Path.GetFileName(Element));
} else {
// Files in directory
File.Copy(Element, destination + Path.GetFileName(Element), true);
}
}
} catch (Exception ex) {
return false;
}
return true;
}
private static void copyDirectory(string Source, string destination)
{
string[] Files = null;
if (destination[destination.Length - 1] != Path.DirectorySeparatorChar) {
destination += Path.DirectorySeparatorChar;
}
if (!Directory.Exists(destination)) {
Directory.CreateDirectory(destination);
}
Files = Directory.GetFileSystemEntries(Source);
foreach (string Element in Files) {
// Sub directories
if (Directory.Exists(Element)) {
copyDirectory(Element, destination + Path.GetFileName(Element));
} else {
// Files in directory
File.Copy(Element, destination + Path.GetFileName(Element), true);
}
}
}
}