string strTempPath = Path.GetTempPath();


이거 쓰세요......

돌겠눼.......


.........................................................................................................................

사용자 계정 폴더 하위의 temp에 직접 임시파일을 기록할 일이 있다.

이 폴더는 윈도가 관리하는 폴더라 나중에 디스크 정리 때 같이 정리할 수 있으며,

윈도가 다중 사용자 계정일 상태에는 단일 사용자마다 temp가 따로 주어지므로 보안(?)이나 관리측면에서 용이한 면이 있다.


C#에서는 전역 클래스로 Environment클래스가 제공되며 이 클래스를 통해 실행되는 시스템의 OS관련 정보, 실행 프로그램에 대한 위치 등에 대한 관련 정보, 그리고 윈도가 제공하는 시스템 디렉토리등에 대한 정보들을 제공하는데 


보통 C:\Documents and Settings\{USERNAME}\ApplicationData 경로는 Environment.SpecialFolder의 열거자중에 골라서 리턴받을 수 있으며 다양하게 제공하기도 한다.


하지만  정작 {USERNAME}\Local Settings\Temp 의 경로, 즉 Temp 폴더는 열거자에서 찾아볼 수 없다.

그러나 다른 방법으로 Temp경로를 얻을 수 있는데


바로

Environment.GetEnvironmentVariable("temp");

을 통해 얻을 수 있다.

(이걸 그대로 출력하면 C:\Document~1\ ~~" 이런식으로 Dos에서의 출력처럼 8.3자 제한에 짤려서 출력이 된다(시샵 Console용으로 출력시. 그래서 아래를 참고)


위 메소드를 통해 

"C:\Documents and Settings\{USERNAME}\Local Settings\Temp"까지 얻을 수 있고 이걸 그대로 사용하면 파일로 인식되는 모호성이 발생하기 때문에 나는  


Path.GetFullPath(Environment.GetEnvironmentVariable("temp") + "\\");


로 static선언을 통해 리턴받아 사용한다.


그렇게 되면 정확하게 

"C:\Documents and Settings\{USERNAME}\Local Settings\Temp\"

이 출력되며, 그 뒤에 파일이나 하위 디렉토리를 추가하여 다른 작업을 할 수 있다.


Temp 의미상 임시로 즉각적인 임시파일의 기록이나 폴더를 사용하기 위한 용도로만 사용해야 맞는것이며 부팅하거나 다른 작업시 운영체제가 임의로 정리 가능한 권리를 가지는 폴더이기 때문에 파일의 일정기간의 저장을 위한 용도로는 사용하지 않는것이 좋다.


특정 프로그램에서 일정 기간의 저장, 예로 config.xml같은 실행시에만 초기에 프로그램의 환경설정 변수를 잡아주는 용도로 사용하는 파일을 저장할때는 C:\Documents and Settings\{USERNAME}\ApplicationData 같은 ApplicationData의 하위폴더에 대표하위폴더를 생성해서 그 안에서 작업하는것이 일반적이다.


한글 MSDN : http://msdn.microsoft.com/ko-kr/library/system.environment(v=vs.80).aspx (System.Environment 클래스) (.net v2.0)



+ Recent posts