9월, 2018의 게시물 표시

[C#] 시스템의 특별한 폴더 경로 가져오기 (Environment.GetFolderPath)

Special Directories   스페셜 폴더는 이름에서 알 수 있듯 OS에 존재하는 여러 특별한 폴더들을 말합니다. 가장 흔히 접할 수 있는 스페셜 폴더로는 내 문서, 내 그림, 내 동영상  폴더들이 있죠.   더 많은 스페셜 폴더는 이 링크 를 클릭해 확인해보세요. Special Directory를 사용해야 하는 상황?   프로그래밍을 하다 보면, 심심치 않게 이런 특별한 폴더들을 사용해야만 하는 경우가 생깁니다. 게임을 예로 들어볼까요? 스타크래프트 2, HOTS  등 여러 블리자드의 게임은 저장소, 리플레이  등을 저장하기 위해 내 문서  폴더를 사용합니다. 이렇게 말로 하면 굉장히 간단하게 느껴지지만, 코딩을 생각보단 복잡할 수 있습니다. var myDocumentPath = $@"{_systemDrive}:\Users\{_userName}\Documents"; // 윈도우 Vista 이상 myDocumentPath = $@"{_systemDrive}:\Documents And Settings\{_userName}\My Documents"; // XP   내 문서 경로를 구하기 위해, 시스템 드라이브 (C:인지, D:인지, E:인지, ...)를 알아내야 하고, 현재 로그온한 사용자의 이름 의 짧은 버전 을 알아내서 조합해야만 합니다. 이 얼마나 복잡한가요. 심지어 OS 버전별로 다 다른 경로 도 있기에, 그에 따른 처리까지 해줘야 합니다. 위의 경우는 %USERPROFILE% 폴더가 XP에서는 %SYSTEMDRIVE%\Documents And Settings\%USERNAME%이지만, VISTA 이상에서는 %SYSTEMDRIVE%\Users\%USERNAME%이죠.   바로 이럴 때 미리 정의된 Special Directory의 경로를 가져오는 기능 을 사용하면 아주 간편합니다. System.Environment.GetFolderPath(SpecialFolder fol