내가 확신 할 수있는 폴더 이름을 포함하는 문자열을 얻는 가장 좋은 방법은 이 아니고이 있습니까? 즉, 지정된 경로에 DirectoryInfo.Exists
을 호출하면 false가 반환됩니다.존재하지 않는 폴더의 이름을 얻는 가장 좋은 방법은 무엇입니까?
EDIT : 오류 검사기에 대한 테스트를 작성하고 오류 검사기가 경로가 존재하는지 테스트하므로 존재하지 않는 경로를 얻는 가장 좋은 방법에 대해 큰소리로 궁금해했습니다.
내가 확신 할 수있는 폴더 이름을 포함하는 문자열을 얻는 가장 좋은 방법은 이 아니고이 있습니까? 즉, 지정된 경로에 DirectoryInfo.Exists
을 호출하면 false가 반환됩니다.존재하지 않는 폴더의 이름을 얻는 가장 좋은 방법은 무엇입니까?
EDIT : 오류 검사기에 대한 테스트를 작성하고 오류 검사기가 경로가 존재하는지 테스트하므로 존재하지 않는 경로를 얻는 가장 좋은 방법에 대해 큰소리로 궁금해했습니다.
GUID 뒤에
이라는 이름을 지정하면 잘못된 문자를 제거하기 만하면됩니다.
guid에 잘못된 문자가 포함되어 있습니까? 나는 단지 한 번 보았고 그 것처럼 보이지 않습니다. – robertkroll
글쎄, 하나의 좋은 방법은 사용자 이름, 오늘 날짜 및 시간 (밀리 초)까지 문자열을 연결하는 것입니다.
나는 궁금한데 왜 이것을하고 싶습니까? 그것은 무엇을 위해 있어야 하는가?
글쎄, 디렉토리를 만들지 않고 몇 마이크로 초 전에 존재하지 않았 음을 확신 할 수 있습니다. 이 스레드 인종에 대해 차단하는 디렉토리 (당신 아래에서 디렉토리를 훔치는 즉 다른 프로세스/스레드)를 생성하는
string path = Path.GetTempFileName();
File.Delete(path);
Directory.CreateDirectory(path);
참고 : 여기에 충분히 근접 할 수있는 한 가지 방법입니다.
이것은 임시 폴더의 경로를 얻는다. 그러나 krolley가 지속될 어떤 것을 원한다면, 이것은 작동하지 않을 것이다. –
사실이지만 더 많은 문맥이 없으면 이것이 좋은지 나쁜지 알기가 어렵습니다.사실, jop의 Guid 제안이 마음에 든다. openid를 고칠 수 있다면 나는 "up"할 것이다 .-p –
AFAIK, Windows에서는 이제 단일 원자 트랜잭션으로 여러 작업을 래핑하는 방법이있다. 따라서 절대적인 대답은 없습니다. 우리가 가진 것은 모두 '좋은 답변'입니다. – jop
정말로 원하는 방식으로 정확하게 수행 할 방법이 없습니다. 생각해 보면 DirectoryInfo.Exists
에 대한 호출이 false를 반환 한 후에도 다른 프로그램이 디렉토리를 만들었을 가능성이 있습니다. 이는 경쟁 조건입니다.
정상적인 방법은 새 임시 디렉토리를 만드는 것입니다. 생성이 성공하면 작성하기 전에 존재하지 않았 음을 알 수 있습니다.
임시 폴더 또는 다른 것을 만드시겠습니까? 나는 Guid.NewGuid를 사용하여 확실히 존재하지 않는 폴더 이름에 사용할 문자열을 얻습니다.
약간 고유 한 네임 스페이스 (예 : 응용 프로그램/제품 이름)에서 새로 생성 된 GUID를 사용하면 원하는 것을 얻을 수 있습니다. 예를 들어, 다음 코드는 실패 매우 않을 수 있습니다 : 당신이에서 문자를 제거 할 필요가 같은
이using System.IO;
string path = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());
(또한,이하지 않는 것 : 내가 사용 결국 무엇
string ParentPath = System.IO.Path.Combine(Environment.GetEnvironmentVariable("TEMP"), "MyAppName");
string UniquePath = System.IO.Path.Combine(ParentPath, Guid.NewGuid().ToString());
System.IO.Directory.CreateDirectory(UniquePath);
guid - 그들은 법적인 파일 이름을 생성합니다)
어떤 임의의 이름을 원하십니까? 임시 폴더 용? 그렇지 않으면 나는 당신이 원하는 것을 얻지 못한다 : – OregonGhost