2010-08-02 7 views
3

내 코드 숨김에서 현재 문서를 서버의 폴더에 저장하고 있습니다. 문서가 일시적인 경우 파일 이름에 "_temp"를 추가합니다. 페이지로드시이 문서가 보관되어있는 서버 폴더를 확인하고 임시 문서를 삭제하려고합니다. 즉 "_temp"로 끝나는 파일.C# 파일 삭제

이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

+2

고유성을 보장하기 위해 'guid'파일 이름을 사용하는 것이 더 좋을 수 있습니다 ... –

답변

4
string[] files = 
Directory.GetFiles 
    (@"c:\myfolder\", "*_temp.txt", SearchOption.TopDirectoryOnly); 

또는 모든 파일을 얻을 당신이 결과를 반복하고 그들에게 하나 하나를 삭제해야하면 LINQ

var files = from f in Directory.GetFiles((@"c:\MyData\SomeStuff") 
    where f.Contains("_temp") 
    select f; 

를 사용하여. 그러나이 asp.net 사이트에 대한 비쌀 수 있습니다. 또한 동시 요청이 예외를 throw하지 않는지 확인해야합니다.

임시 파일을 비 임시 파일과 공유되는 디렉터리에 두지 말고 단일 디렉터리에 저장하는 것이 좋습니다. 명확성과 마음의 평화를 위해서.

4

페이지로드시에 그렇게하는 것이 꽤 비쌉니다. 타이머 나 그런 식으로 할 것입니다.

어쨌든 Directory.GetFiles을 사용하면 특정 패턴과 일치하는 파일 이름을 찾을 수 있습니다. 또는 패턴을 올바르게 가져 오는 것으로 실험하지 않고 어쨌든 파일이 많지 않으면 overload without the pattern으로 전화를 걸고 직접 필터링 할 수 있습니다.

0
string[] myFiles = Directory.GetFiles(@"C:\path\files"); 

foreach (string f in myFiles) 
{ 
    File.Delete(f); 
} 

또는 오히려 그냥 파일 이름보다 당신은 DirectoryInfo 객체를 생성하고 호출 할 수 있습니다 (그렇지하지만 ... 결코 알지 못할처럼 소리를하지만) 당신은 FileInfo 작업 할 경우 GetFiles()

DirectoryInfo di = new DirectoryInfo(@"c:\path\directory"); 
FileInfo[] files = di.GetFiles("*_temp.txt"); 

foreach (FileInfo f in files) 
{ 
    f.Delete(); 
}