2010-08-15 2 views
1

나는 대략 Path.GetTempFileName()를 알고 임시 폴더를 얻는 방법 (보통 당신의 C 드라이브에)Temp 특정 파티션의 파일 이름?

그러나 특정 파티션에 임시 파일 이름을 어떻게 얻을 수 있습니까? 나는 해결 방법으로 targetBaseDir/temp.tmp와 같은 것을 할 것이고 File.Move가 완성 될 때 그것을 할 것이라고 생각한다.

+0

사용하는 네이티브 GetTempFileName 방법을 사용할 수 있습니다 같은

뭔가? – Beatles1692

+1

@Beatles : 저장시 이미있는 파일이 손상되지 않도록 나중에 이름을 바꾸기 위해 쓰는 임시 파일을 만들고 싶습니다. 단일 볼륨 (파티션이 아닌 :-))에서만 원자 이동을 할 수 있기 때문에'$ Env : Temp'를 파일의 위치로 사용하는'GetTempFileName()'을 잘 사용할 수 없습니다. 그러나 이미 다른 이름이 있다면 고유 한 파일을 만드는 논리가 도움이 될 수 있습니다. 그래서이 질문에 대한 답을 얻은 것 같습니다. – Joey

+0

@Johannes : 답변 해 주셔서 감사합니다. 그것은 내가 짐작했던 것과 똑같은 것이었지만 나는 어떤 코멘트라도하기 전에 확신하고 싶었다. – Beatles1692

답변

2

왜 GetTempFilePath 메서드를 직접 만들지 않습니까? 당신이 정확히하고 싶은 것을이

string GetTempFilePath(string basePath, string extension) 
{ 
    return Path.Combine(basePath, Guid.NewGuid().ToString()+"."+extension); 
} 

//Usage 
GetTempFilePath("E:\\", "tmp"); 

//Output 
//E:\e2e4873e-daf5-41b6-bdc5-2afec61921e2.tmp 

아니면 좀 더 설명해 주시겠습니까 System.IO.Path.GetTempFileName()

+1

'Guid.NewGuid'보다는'Path.GetRandomFileName'을 사용 하겠지만, 그렇지 않으면 좋은 답변입니다;) –