파일을 만들 디렉터리가 없는 경우 어떻게 디렉터리를 만들 수 있습니까?
디렉터리가 존재하지 않으면 손상되는 코드가 있습니다.
System.IO.File.WriteAllText(filePath, content);
한 줄(또는 몇 줄)로 새 파일로 이어지는 디렉터리가 없는지 확인하고 없으면 새 파일을 만들기 전에 디렉터리를 만들 수 있습니까?
.NET 3.5를 사용합니다.
작성할 내용
(new FileInfo(filePath)).Directory.Create()
파일에 쓰기 전에.
..또는, 존재하는 경우, 생성(그렇지 않으면 아무것도 하지 않음)
System.IO.FileInfo file = new System.IO.FileInfo(filePath);
file.Directory.Create(); // If the directory already exists, this method does nothing.
System.IO.File.WriteAllText(file.FullName, content);
다음 코드를 사용할 수 있습니다.
DirectoryInfo di = Directory.CreateDirectory(path);
@hitec이 말했듯이 올바른 권한을 가지고 있는지 확인해야 합니다. 권한이 있으면 다음 행을 사용하여 디렉터리가 있는지 확인할 수 있습니다.
Directory.CreateDirectory(Path.GetDirectoryName(filePath))
존재하지 않는 디렉터리로 파일을 이동하는 가장 좋은 방법은 네이티브 FileInfo 클래스에 다음 확장명을 만드는 것입니다.
public static class FileInfoExtension
{
//second parameter is need to avoid collision with native MoveTo
public static void MoveTo(this FileInfo file, string destination, bool autoCreateDirectory) {
if (autoCreateDirectory)
{
var destinationDirectory = new DirectoryInfo(Path.GetDirectoryName(destination));
if (!destinationDirectory.Exists)
destinationDirectory.Create();
}
file.MoveTo(destination);
}
}
그런 다음 새 MoveTo 확장자를 사용합니다.
using <namespace of FileInfoExtension>;
...
new FileInfo("some path")
.MoveTo("target path",true);
파일을 사용할 수 있습니다.파일이 있는지 확인하고 파일을 사용하여 파일을 만들기 위해 존재합니다.필요한 경우 작성합니다.해당 위치에서 파일을 만들 수 있는 액세스 권한이 있는지 확인합니다.
파일이 있는지 확인하면 안전하게 파일에 쓸 수 있습니다.예방 차원에서 코드를 시도...캐치 블록에 넣고 계획대로 작동하지 않을 경우 발생할 수 있는 예외를 포착해야 합니다.
var filePath = context.Server.MapPath(Convert.ToString(ConfigurationManager.AppSettings["ErrorLogFile"]));
var file = new FileInfo(filePath);
file.Directory.Create();
디렉터리가 이미 있는 경우 이 메서드는 아무 작업도 수행하지 않습니다.
var sw = new StreamWriter(filePath, true);
sw.WriteLine(Enter your message here);
sw.Close();
언급URL : https://stackoverflow.com/questions/2955402/how-do-i-create-directory-if-it-doesnt-exist-to-create-a-file
'programing' 카테고리의 다른 글
SQL Server Management Studio 17에서 하나 이상의 구성 요소를 찾을 수 없습니다. (0) | 2023.05.21 |
---|---|
정적 속성에 바인딩 (0) | 2023.05.21 |
전체 저장 프로시저 코드를 표시하는 방법은 무엇입니까? (0) | 2023.05.21 |
방법은 정적으로 만들 수 있지만, 그래야 합니까? (0) | 2023.05.21 |
JavaScript의 Zip 배열? (0) | 2023.05.16 |