2011-01-18 2 views
4

기본적으로 다음과 같은 임시 파일 다운로드 문제와 관련하여 모범 사례가 있는지 궁금합니다. 사용하지만 결국 응용 프로그램 폴더로 이동하십시오. 나는 몇 가지 옵션에 직면하고 있습니다 : 일부 파일이 때 사용하기 때문에C# 모범 사례 : 다운로드 용 임시 파일 쓰기 : 응용 프로그램 환경 폴더 또는 임시 폴더에 넣기

//Option 1 - Random file 
String tempfile = Path.GetTempFileName(); 
WriteData(tempfile); 
File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename); 

//Option 2 - Temp Path + Random file name 
String tempfile = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()); 
WriteData(tempfile); 
File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename); 

//Option 3 - Temp Path + real file name 
String tempfile = Path.Combine(Path.GetTempPath(), filename); 
WriteData(tempfile); 
File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename); 

//Option 4 - Temp Application Path + Random file name 
String tempfile = Path.Combine(Environment.CurrentDirectory, Settings.Default.DownloadFolder, Path.GetRandomFileName()); 
WriteData(tempfile); 
File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename); 

//Optioin 5 - Temp Application Path + file name 
String tempfile = Path.Combine(Environment.CurrentDirectory, Settings.Default.DownloadFolder, filename); 
WriteData(tempfile); 
File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename); 

내가 그것을 가고 끝나는 곳으로 파일을 직접 작성하는 옵션이 없습니다. 임시 영역으로 가야합니다 ...

답변

8

첫 번째 옵션은 아주 좋은이기 때문에 온도 응용 프로그램 경로 + 임의의 파일 이름

String tempfile = Path.Combine(Environment.CurrentDirectory, Settings.Default.DownloadFolder, Path.GetRandomFileName()); 
WriteData(tempfile); 
File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename); 

는 최선의 선택입니다. 그 꽤 명확하고 잘 문서화 된 여기에 무슨 일이.

//Option 1 - Random file 
String tempfile = Path.GetTempFileName(); 
WriteData(tempfile); 
File.Move(tempfile, Path.Combine(Environment.CurrentDirectory, filename); 

Environment.CurrentDirectory 비트를 제외하고. Astander가 this answer에서 지적했듯이 dialogs can change Environment.CurrentDirectory

+0

'Environment.CurrentDirectory' 문제에 대한 좋은 지적입니다. –

0

이 winforms? 편물? WPF? 뭐? 응용 프로그램 사용자의 프로필에 저장하는 것이 왜 좋을까요?

+0

등의 이유로 AppDomain.BaseDirectory를 사용하려고합니다. 다운로드되는 파일이 모든 사용자에게 중요하다는 것을 명심해야합니다. 따라서 애플리케이션 사용자의 프로필 폴더 (또는 임시 폴더)로 다운로드 할 수 있지만 결국에는 애플리케이션 폴더로 이동해야합니다. – michael

+2

이것은 아마도 –

1

// 옵션 4 - 그것은는 SecurityException를 제기하지 않을 또는 IOException이 다른 사람 수

+1

"SecurityExceptions 또는 IOException 다른 사용자가 발생시킬 수 없기 때문에"대답이 아닌 주석으로 더 좋습니다. 나는 왜 당신이 이것을 생각하는지 모르겠다. Settings.Default.DownloadFolder가 무엇인지 알지 못하며 파일을 열면 보안 또는 ioexceptions이 발생할 수 있습니다. –