Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

닷넷!스킬업

닷넷 기술을 조금 더 깊이 다루고자 합니다. 특정 주제를 정하지 않고 이슈 발생 시 마다 체계적으로 정리하여 공유하겠습니다. 이전 자료를 옮겨온 곳이기도 합니다.

파일 및 디렉터리 작업

작성자 : 박종명
최초 작성일 : 2008-06-16 (월요일)
최종 수정일 : 2008-06-16 (월요일)
조회 수 : 3117

* 파일 및 디렉터리 작업

지금까지 System I/O 수행을 가능케 하는 Stream 관련 클래스들을 살펴 보았다.

System.IO 네임스페이스에는  Stream 이외에 컴퓨터의 디렉터리나 파일 구조를 프로그래밍 방식으로 핸들링 가능케 하는 여러 유용한 클래스들을 제공한다.

 

* Class

- DirectoryInfo : 디렉터리의 정보 조회,생성,이동,삭제 등을 가능케 하는 멤버 가짐

- FileInfo : 파일의 정보 조회,생성,이동,복사,삭제 등을 가능케 하는 멤버 가짐

- Directory : DirectoryInfo 와 유사

- File : FileInfo 와 유사

 

* Hierarchy


DirectoryInfo FileInfo FileSystemInfo 추상클래스로부터 상속을 받는다.

FileSystemInfo 추상클래스에는 파일과 디렉터리를 조작할 때 공통적으로 사용되는 메서드가 정의 되어 있다.

 

* 차이점

위의 클래스 목록에서 설명했듯이 DirectoryInfo ? Directory FileInfo ? File 클래스는 대부분 유사한 기능(멤버)를 가진다.  그럼 이 둘의 차이점은 무엇일까..??

 

1. 보안 검사 수행 측면

Directory/File 클래스의 멤버는 모두 정적(static) 메서드 이다.

이 클래스들의 모든 메서드는 호출될 때마다 보안검사를 수행한다. 따라서 특정 디렉터리(or 파일)에 대해 단 한번만 작업을 할 경우에는 이 클래스를 사용하는 것을 고려해 볼 만 하다.

그러나 특정 디렉터리(or 파일) 에 대해 여러 번 다시 조작(사용)해야 할 경우에는 매번 보안 검사를 수행하는 이 클래스를 적합하지 않을 것이다. 이 때는 DirectoryInfo/FileInfo 클래스를 사용하는 것이 좋다

 

2. 반환 값 측면

Directory/File 클래스의 멤버들은 객체가 아닌 문자열을 반환 한다.
(Directory.GetDirectories , ..GetFiles 메서드는 string 배열을 반환한다)

반면 DirectoryInfo/FileInfo 클래스는 일반적으로 객체를 반환한다.

(DirectoryInfo.GetDirectoires 메서드는 DirectoryInfo 배열을 반환한다)

따라서 디렉터리에 대한 재귀적인 프로그래밍을 할 경우에는 이 클래스가 더 적합할 것이다.


3. 기타
Directory 에는 DirectoryInfo 에 없는 GetLogicalDreives 멤버가 있다.

 


4. Demo

DirectoryInfo/FileInfo , Directory/File 클래스들을 사용하여 간단한 폴더 및 파일 탐색을 구현해 보자.

아래는 데모 프로젝트의 캡쳐 화면이다



일단 특정 드라이버의 디렉터리들을 열거 하기 위해 재귀호출을 사용하였다

이때 DirectoryInfo 를 사용하였으며 디렉터리 생성 및 제거 복사,이동은 Directory/File 클래스를 사용하였다. 자세한 소스는 첨부파일을 확인하기 바라며 소스에 적절한 주석을 보길 바란다

이름
비밀번호
홈페이지
IK <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요