2009-08-20 4 views

답변

1

약간의 반사경 동작은 TempFileCollection에 다음과 같은 재미있는 조각을 보여준다 :

new FileIOPermission(FileIOPermissionAccess.AllAccess, basePath).Demand(); 
path = this.basePath + ".tmp"; 
using (new FileStream(path, FileMode.CreateNew, FileAccess.Write)) 
{ 
} 
flag = true; 
... 
this.files.Add(path, this.keepFiles); 

TempFileCollection.AddExtension에 의해 호출 TempFileCollection.BasePath에 의해 호출되는, TempFileCollection.EnsureTempNameCreated입니다. 나는 자리 표시자를 ".tmp"를 사용하여 그렇게 할 수 없다고 생각합니다.

1

그것은 처음으로 당신이 AddExtension 메소드를 호출 것 같다, 자동으로 다음에 시도하기 전에 컬렉션에 "TMP"확장자를 가진 파일 이름을 추가합니다 : 여기

using (var tfc = new TempFileCollection()) 
{     
    var fn = tfc.AddExtension("tmp"); 
    Console.WriteLine(fn); 
} 

정확한 예외 지정된 확장자로 파일 이름을 추가하십시오.

그래서 "tmp"를 확장자로 지정하면 동일한 파일이 두 번 추가되어 예외가 발생합니다.

using (var tfc = new TempFileCollection()) 
{ 
    var foo = tfc.AddExtension("foo"); 
    var bar = tfc.AddExtension("bar"); 

    foreach (var f in tfc) 
    { 
     Console.WriteLine(f); 
    } 
} 

위의 코드는 다음 출력을 생성합니다. 명시 적으로 추가하지 않은 확장명이 "tmp"인 파일 이름이 포함되어 있습니다.

C:\Users\Luke\AppData\Local\Temp\jmat4jqg.tmp 
C:\Users\Luke\AppData\Local\Temp\jmat4jqg.bar 
C:\Users\Luke\AppData\Local\Temp\jmat4jqg.foo 
관련 문제