개발자는 파일 시스템을 수정하고 정보를 수집하거나 파일의 내용을 수정하기 위해 디렉토리와 파일에 접근해야 한다. 우리는 이 글에서 파일과 디렉토리와 관련된 필수 클래스들이 있는 System.IO 네임스페이스에 대해 논의할 것이다. 우리는 System.IO 네임스페이스를 필요로 하는 간단한 C# 애플리케이션을 예로 사용할 것이다.
System.IO 네임스페이스는 디렉토리와 파일관련 작업에 필요한 클래스, 메소드, 프로퍼티를 제공한다. 주요 클래스들은 다음에 나열했고, 네임스페이스와 클래스의 완전한 정보는 MS의 웹사이트에서 확인하라(주: C#에서 프로퍼티는 get, set 메소드를 구현한 변수를 말한다).
* BinaryReader, BinaryWriter: 바이너리 데이터를 읽고 쓰는 기능을 제공한다.
* Directory, DirectoryInfo: 디렉토리를 만들고, 옮기고, 읽는 기능을 제공한다.
* File, FileInfo: 파일을 만들고, 복사하고, 삭제하고, 옮기고, 여는 기능을 제공한다.
* FileStream: 임의 접근을 허용한다(주: 파일에 처음부터 접근하지 않고 위치를 임의로 정할 수 있다).
* FileStreaminfo: FileInfo와 DirectoryInfo의 상위 클래스다.
* FileStreamWatcher: 특정 디렉토리에서 하위 디렉토리나 파일의 이벤트를 감시하는 기능을 제공한다.
* StreamReader, StreamWriter, StringReader, StringWriter: 텍스트 데이터를 읽고 쓰는 기능을 제공한다.
* TextReader, TextWriter: 문자열을 순차적으로 읽고 쓰는 기능을 제공한다.
이 클래스들 중 5가지를 좀 더 자세히 설명한다.
FileSystemInfo 클래스
FileSystemInfo는 추상 클래스이기 때문에 직접 객체를 생성할 수 없다. 이 클래스는 DirectoryInfo와 FileInfo의 상위 클래스이고 다음은 이 클래스의 프로퍼티와 메소드들이다.
* Attributes: 파일의 속성을 가져온다
* CreationTime: 파일의 생성 시간을 가져온다
* Exists: 파일이 존재하는지 검사한다.
* Extension: 파일의 확장자를 가져온다
* LastAccessTime: 파일에 마지막으로 접근한 시간을 가져온다
* FullName: 경로를 포함한 파일이름을 가져온다
* LastWriteTime: 파일에 마지막으로 쓴 시간을 가져온다
* Name: 파일의 이름을 가져온다
DirectoryInfo 클래스
이 클래스는 디렉토리와 특정 디렉토리의 하위 디렉토리와 파일을 만들고, 복사하고, 옮기고, 삭제하고, 이름을 변경하고, 나열하는 기능을 제공한다. 다음 예는 DirectoryInfo 클래스를 사용하는 것인데 예 A는 디렉토리의 FullNameproperty를 얻어오는 코드이고 예 B는 하위 디렉토리를 만드는 코드이다.
--예 A
DirectoryInfo dr1 = new DirectoryInfo (@"C:\code_examples1\");
MessageBox.Show(dr1.FullName);
--예 B
DirectoryInfo dr2 = new DirectoryInfo(@"C:\code_examples2\");
dr1.CreateSubdirectory("subdir1");
FileInfo 클래스
이 클래스는 파일을 만들고, 복사하고, 옮기고, 삭제하고, 여는 기능을 제공한다. 다음은 FileInfo 클래스를 사용하는 예인데 예 C는 파일의 생성 시간을 얻어오는 필수 코드이다. 그리고 예 D는 파일의 크기를 얻어오는 코드이고 예 D는 파일을 삭제하는 예이다.
-- 예 C
FileInfo f1 = new FileInfo (@"C:\code_examples1\file1.txt");
MessageBox.Show(f1.CreationTime.ToString());
-- 예 D
FileInfo f2 = new FileInfo (@"C:\code_examples1\file2.txt");
MessageBox.Show(f2.Length.ToString());
-- 예 E
FileInfo f3 = new FileInfo (@"C:\code_examples1\file3.txt");
f3.Delete(); //delete the file
MessageBox.Show(f1.Exists.ToString()); //the file has been deleted so will display false
StreamWriter와 StreamReader 클래스
예 F는 파일에 텍스트를 쓰는 코드이고 예 G는 파일의 내용을 라인 단위로 읽는 것이다. 그리고 예 H는 파일의 전체내용을 한 번에 읽는 코드이다.
-- 예 F
FileInfo f1 = new FileInfo (@"C:\code_examples1\file1.txt");
StreamWriter w1 = f1.CreateText();
w1.WriteLine("Line 1");
w1.WriteLine("Line 2");
w1.Close();
-- 예 G
string str1="";
StreamReader s1 = File.OpenText(@"C:\code_examples1\file1.txt");
while ((str1 = s1.ReadLine()) != null)
{
MessageBox.Show(str1);
}
s1.Close();
-- 예 H
string str1="";
StreamReader s1 = File.OpenText(@"C:\code_examples1\file1.txt");
str1 = s1.ReadToEnd();
MessageBox.Show(str1);
s1.Close();
Open() 메소드 사용하기
예 I는 Open() 메소드로 파일을 읽고 쓰는 것이다. 여기서 파일모드 옵션(FileMode Enumeration)을 열거, 설명한다.
* Append: 파일을 열고 데이터를 추가하는데 사용한다. 반드시 FileAccess.Write 값과 함께 사용해야 한다.
* Create: 새 파일을 만드는데 사용한다. 만약 같은 이름의 파일이 존재하면 덮어쓴다.
* CreateNew: 새 파일을 만드는데 사용하지만 같은 이름의 파일이 존재하면 IOException을 발생시킨다.
* Open: 파일을 여는데 사용한다.
* OpenOrCreate: 같은 이름의 파일이 존재하면 열고 없으면 새로 생성한다.
* Truncate: 존재하는 파일의 내용을 무시하고 빈 파일로 연다.
다음은 파일 접근 옵션(FileAcess Enumeration)이다.
* Read: 파일의 데이터를 읽을 때 사용한다.
* ReadWrite: 파일의 데이터를 읽기도 하고 쓰기도 할 때 사용한다.
* Write: 파일에 데이터를 쓸 때 사용한다.
C#에서 System.IO 네임스페이스를 사용해 디렉토리와 파일에 접근하는 방법을 살펴보았다. @
** 저자 소개 **
아이리나 메드빈스카야는 1996년부터 IT 업계에 일했다. 그는 페이스 대학에서 MBA 학위를 받았고 시티그룹에서 프로젝트 관리자로 일한다.
System.IO 네임스페이스는 디렉토리와 파일관련 작업에 필요한 클래스, 메소드, 프로퍼티를 제공한다. 주요 클래스들은 다음에 나열했고, 네임스페이스와 클래스의 완전한 정보는 MS의 웹사이트에서 확인하라(주: C#에서 프로퍼티는 get, set 메소드를 구현한 변수를 말한다).
* BinaryReader, BinaryWriter: 바이너리 데이터를 읽고 쓰는 기능을 제공한다.
* Directory, DirectoryInfo: 디렉토리를 만들고, 옮기고, 읽는 기능을 제공한다.
* File, FileInfo: 파일을 만들고, 복사하고, 삭제하고, 옮기고, 여는 기능을 제공한다.
* FileStream: 임의 접근을 허용한다(주: 파일에 처음부터 접근하지 않고 위치를 임의로 정할 수 있다).
* FileStreaminfo: FileInfo와 DirectoryInfo의 상위 클래스다.
* FileStreamWatcher: 특정 디렉토리에서 하위 디렉토리나 파일의 이벤트를 감시하는 기능을 제공한다.
* StreamReader, StreamWriter, StringReader, StringWriter: 텍스트 데이터를 읽고 쓰는 기능을 제공한다.
* TextReader, TextWriter: 문자열을 순차적으로 읽고 쓰는 기능을 제공한다.
이 클래스들 중 5가지를 좀 더 자세히 설명한다.
FileSystemInfo 클래스
FileSystemInfo는 추상 클래스이기 때문에 직접 객체를 생성할 수 없다. 이 클래스는 DirectoryInfo와 FileInfo의 상위 클래스이고 다음은 이 클래스의 프로퍼티와 메소드들이다.
* Attributes: 파일의 속성을 가져온다
* CreationTime: 파일의 생성 시간을 가져온다
* Exists: 파일이 존재하는지 검사한다.
* Extension: 파일의 확장자를 가져온다
* LastAccessTime: 파일에 마지막으로 접근한 시간을 가져온다
* FullName: 경로를 포함한 파일이름을 가져온다
* LastWriteTime: 파일에 마지막으로 쓴 시간을 가져온다
* Name: 파일의 이름을 가져온다
DirectoryInfo 클래스
이 클래스는 디렉토리와 특정 디렉토리의 하위 디렉토리와 파일을 만들고, 복사하고, 옮기고, 삭제하고, 이름을 변경하고, 나열하는 기능을 제공한다. 다음 예는 DirectoryInfo 클래스를 사용하는 것인데 예 A는 디렉토리의 FullNameproperty를 얻어오는 코드이고 예 B는 하위 디렉토리를 만드는 코드이다.
--예 A
DirectoryInfo dr1 = new DirectoryInfo (@"C:\code_examples1\");
MessageBox.Show(dr1.FullName);
--예 B
DirectoryInfo dr2 = new DirectoryInfo(@"C:\code_examples2\");
dr1.CreateSubdirectory("subdir1");
FileInfo 클래스
이 클래스는 파일을 만들고, 복사하고, 옮기고, 삭제하고, 여는 기능을 제공한다. 다음은 FileInfo 클래스를 사용하는 예인데 예 C는 파일의 생성 시간을 얻어오는 필수 코드이다. 그리고 예 D는 파일의 크기를 얻어오는 코드이고 예 D는 파일을 삭제하는 예이다.
-- 예 C
FileInfo f1 = new FileInfo (@"C:\code_examples1\file1.txt");
MessageBox.Show(f1.CreationTime.ToString());
-- 예 D
FileInfo f2 = new FileInfo (@"C:\code_examples1\file2.txt");
MessageBox.Show(f2.Length.ToString());
-- 예 E
FileInfo f3 = new FileInfo (@"C:\code_examples1\file3.txt");
f3.Delete(); //delete the file
MessageBox.Show(f1.Exists.ToString()); //the file has been deleted so will display false
StreamWriter와 StreamReader 클래스
예 F는 파일에 텍스트를 쓰는 코드이고 예 G는 파일의 내용을 라인 단위로 읽는 것이다. 그리고 예 H는 파일의 전체내용을 한 번에 읽는 코드이다.
-- 예 F
FileInfo f1 = new FileInfo (@"C:\code_examples1\file1.txt");
StreamWriter w1 = f1.CreateText();
w1.WriteLine("Line 1");
w1.WriteLine("Line 2");
w1.Close();
-- 예 G
string str1="";
StreamReader s1 = File.OpenText(@"C:\code_examples1\file1.txt");
while ((str1 = s1.ReadLine()) != null)
{
MessageBox.Show(str1);
}
s1.Close();
-- 예 H
string str1="";
StreamReader s1 = File.OpenText(@"C:\code_examples1\file1.txt");
str1 = s1.ReadToEnd();
MessageBox.Show(str1);
s1.Close();
Open() 메소드 사용하기
예 I는 Open() 메소드로 파일을 읽고 쓰는 것이다. 여기서 파일모드 옵션(FileMode Enumeration)을 열거, 설명한다.
* Append: 파일을 열고 데이터를 추가하는데 사용한다. 반드시 FileAccess.Write 값과 함께 사용해야 한다.
* Create: 새 파일을 만드는데 사용한다. 만약 같은 이름의 파일이 존재하면 덮어쓴다.
* CreateNew: 새 파일을 만드는데 사용하지만 같은 이름의 파일이 존재하면 IOException을 발생시킨다.
* Open: 파일을 여는데 사용한다.
* OpenOrCreate: 같은 이름의 파일이 존재하면 열고 없으면 새로 생성한다.
* Truncate: 존재하는 파일의 내용을 무시하고 빈 파일로 연다.
다음은 파일 접근 옵션(FileAcess Enumeration)이다.
* Read: 파일의 데이터를 읽을 때 사용한다.
* ReadWrite: 파일의 데이터를 읽기도 하고 쓰기도 할 때 사용한다.
* Write: 파일에 데이터를 쓸 때 사용한다.
C#에서 System.IO 네임스페이스를 사용해 디렉토리와 파일에 접근하는 방법을 살펴보았다. @
** 저자 소개 **
아이리나 메드빈스카야는 1996년부터 IT 업계에 일했다. 그는 페이스 대학에서 MBA 학위를 받았고 시티그룹에서 프로젝트 관리자로 일한다.
'.net' 카테고리의 다른 글
ASP.NET 2.0에서 달라진 기능 (0) | 2007.07.21 |
---|---|
개발자가 알아두면 좋은 ASP.NET 지식 (세션편 (0) | 2007.07.21 |
DataReader (1) | 2007.07.17 |
DB _ command (0) | 2007.07.17 |
DB를 연결 (0) | 2007.07.17 |