회사 일도 바쁘고 새해라가 여기저기 바쁘게 돌아다니고 그래서 제대로 포스팅을 하질 못했었습니다. 이제야 다시 마음잡고 공부하면서 포스팅을 하려고 하는데요. 집에서 하려니...모니터가 듀얼이 아니네요...거기에다 컴퓨터 사양까지 ㅎㄷㄷ
뭐 그렇다고요 ^^
이번에는 File과 Directory를 찾아주는...음...일종의 커맨드 창에서 dir를 한 것과 비슷한 효과를 낼 수 있는 방법에 대해서 알아 보려고 해요~어떤분들에게는 참 간단한 문제일 수도 있고 저같은 초보에게는 몇시간을 공부해야 겨우 만들수 있는 문제이기도 하죠 ^^
그럼 우선 디렉토리를 가져오는 방법을 한번 알아보도록 하겠습니다. 쉽게 설명을 하기 위해서 C:\의 디렉토리정보를 가져오도록 하죠. 실행 화면은 저희 집의 컴퓨터를 대상으로 한것이기 때문에 다른분들과 틀릴수 있습니다 ^^
우선 ConsoleFileManager이란 클래스를 만들도록 하겠습니다~ 다 만드셨다면 우선 디렉토리를 찾아서 출력해주는 간단한 프로그램을 만들어 보도록하죠~
1 using System;
2 using System.IO;
3
4 namespace FileAndDirectory
5 {
6 class ConsoleFileManager
7 {
8 public void DisplayDirectory(string path)
9 {
10 Console.WriteLine("\n{0} 디렉토리\n",path);
11 string[] dirs = Directory.GetDirectories(path);
12 for (int i = 0; i < dirs.Length; i++)
13 {
14 Console.WriteLine(dirs[i]);
15 }
16 }
17 }
18 }
Directory를 쓰기 위해서는 System.IO 네임스페이스가 필요하기 때문에 using System.IO;를 넣어주었습니다.
Directory 클래스는 디렉토리의 이동, 생성, 열거 등를 할 수 있는 정적메소드들을 가지고 있습니다. 단 상속이 불가능하지요
위와 같이 클래스를 만들어 주시고 메인에서는 저 클래스를 사용을 해주시면 되겠죠 다음과 같이...
1 class Program
2 {
3 static void Main(string[] args)
4 {
5 ConsoleFileManager info = new ConsoleFileManager();
6 info.DisplayDirectory("C:\\");
7 }
8 }
클래스를 호출하고 DisplayDirectory 메소드를 호출하여 C드라이브에 있는 디렉토리를 출력하게 하는것입니다. 제대로 출력이 되는지 확인해 보겠습니다. 실행해 주면 다음과 같은 결과를 볼 수 있습니다.
다음과 같이 디렉토리 정보를 출력하는 프로그램을 만들어 보았습니다. 그럼 이번에는 커맨드에서 dir의 효과를 내는 프로그램을 한번 만들어 보도록 하죠.
위에서 만든 클래스에 DisplayDirectoryInfo라는 메소드를 만들도록 하겠습니다.
1 public void DisplayDirectoryInfo(string path)
2 {
3 Console.WriteLine("\n{0} 디렉토리\n", path);
4 DirectoryInfo dl = new DirectoryInfo(path);
5
6 DirectoryInfo[] directories = dl.GetDirectories();
7 foreach (DirectoryInfo directory in directories)
8 {
9 Console.WriteLine("{0,-25}{1,5}{2,10}{3}", directory.LastWriteTime.ToString("yyyy-MM-dd hh:mm"), "<DIR>", string.Empty, directory.Name);
10 }
11 FileInfo[] files = dl.GetFiles();
12 foreach (FileInfo file in files)
13 {
14 Console.WriteLine("{0,-25}{1,5}{2,10}{3}", file.LastWriteTime.ToString("yyyy-MM-dd hh:mm"), string.Empty, file.Length, file.Name);
15 }
16 }
다음과 같이 메소드를 구성하겠습니다. 이번에는 Directory 클래스 대신 DirectoryInfo 클래스를 사용하였는데요. 해당 경로의 디렉토리와 파일에 대한 정보를 가져오기 위한 클래스입니다. Directory클래스와는 차이는 MSDN를 확인해주시기 바래요 ^^;; Directory 클래스는 static으로 되어 있고 DirectoryInfo 클래스는 static으로 이루어지지 않아 객체 생성을 해야만 쓸수 있지요~~ 해당 클래스에서 F12를 누르면 클래스의 구조를 볼 수 있으니 한번 확인해보시도록 하세요. 어느정도의 차이점이 있는지 확인하실수 있을것입니다.
클래스에 대한 설명은 이정도로 하고요 ^^ 위 foreach문에서는 디렉토리에 대한 정보를 출력하고 아래 foreach문에서는 파일의 정보를 출력하는 메소드 입니다. 메인에서 다음과 같이 입력을 하고요 실행해보도록하죠
1 class Program
2 {
3 static void Main(string[] args)
4 {
5 ConsoleFileManager info = new ConsoleFileManager();
6 info.DisplayDirectoryInfo("C:\\");
7 }
8 }
실행을 하면 다음과 같은 결과를 볼 수 있습니다.
어떤가요. 완전 똑같지는 않지만 커맨드창의 dir과 비슷한 모습을 한 녀석을 볼수가 있지요 ^^
File, Directory로 여러가지 재미난것을 만들 수도 있습니다. 윈도우에서 제공해주는 커맨드창이 아닌 내가 만든 커맨드창을 사용할 수도 있죠. 한번 만들어보면 재미있을껍니다 ^ㅡ^
어떠셨나요?? 그리 어렵지는 않죠?? 그렇다고 쉽다고 생각하고 그냥 넘어간다면 위험해질수도 있죠. File에 대한 건 많은 곳에서 쓰일수 있기 때문에 어느정도 어떻게 써야 하는지는 알고 넘어가는게 좋을꺼라고 생각이 듭니다 ^^
모두 좋은 시간되시고 앞으로도 더 많은 내용 전해드리도록 하겠습니다~~감사합니다~~
'.NET > C#' 카테고리의 다른 글
C# 프로세스 목록 알아오기 (1) | 2010.10.11 |
---|---|
Thread 란? (0) | 2010.10.10 |
Windows Forms의 시작 (2) | 2010.01.19 |
C# Event (0) | 2010.01.18 |
C# delegate (0) | 2010.01.14 |
C# File Input/Output (1) | 2009.12.24 |
C# Collection (0) | 2009.12.21 |
Interface (0) | 2009.12.18 |
Class(5) (0) | 2009.12.18 |
형변환에 대해서... (0) | 2009.12.18 |