23
19 장 장장 장장장장

19장 파일 작업하기

Embed Size (px)

DESCRIPTION

19장 파일 작업하기. 이번 강의에서 배울 내용. 파일 열기 대화상자와 파일 저장 대화상자 컨트롤 사용하기 System.IO.File 로 파일 조작하기 System.IO.Directory 로 디렉토리 조작하기. 파일 열기 대화상자와 파일 저장 대화상자 컨트롤 사용하기. Manipulating Files 라는 제목의 새로운 Windows 응용 프로그램 만들기 - PowerPoint PPT Presentation

Citation preview

Page 1: 19장 파일 작업하기

19 장 파일 작업하기

Page 2: 19장 파일 작업하기

  이번 강의에서 배울 내용

• 파일 열기 대화상자와 파일 저장 대화상자 컨트롤 사용하기 • System.IO.File 로 파일 조작하기 • System.IO.Directory 로 디렉토리 조작하기

Page 3: 19장 파일 작업하기

파일 열기 대화상자와 파일 저장 대화상자 컨트롤 사용하기 

1. Manipulating Files 라는 제목의 새로운 Windows 응용 프로그램 만들기

2. 솔루션 탐색기에서 Form1.cs 이름을 frmManipulatingFiles.cs 로 바꾸고 , 폼의 Text 속성에 Manipulating Files 라고 입력한다 .

3. 폼에 새로운 텍스트 상자를 추가하고 그 속성을 다음과 같이 설정

속성 값Name txtSource

Location 95,8

Size 184,20

Page 4: 19장 파일 작업하기

파일 열기 대화상자 사용하기 

4. 도구 모음에서 OpenFileDialog 항목을 더블클릭하여 프로젝트에 새로운 Open File Dialog 컨트롤 추가– Open File Dialog 컨트롤

• 사용자가 파일을 검색하고 선택할 수 있도록 대화상자를 화면에 표시하고자 할 때 사용

Open File Dialog 컨트롤

폼에  Open File Dialog 컨트롤 추가

Page 5: 19장 파일 작업하기

5. 폼에 버튼을 추가하고 , 그 속성을 다음과 같이 설정

6. 도구상자에서 버튼을 더블클릭하고 , Click 이벤트에 다음 코드 추가openFileDialog1.InitialDirectory = @"C:\"; openFileDialog1.Title = "파일 선택 "; openFileDialog1.FileName = "";

속성 값Name btnOpenFile

Location 8,8

Size 80,23

Text 원본 :

Page 6: 19장 파일 작업하기

파일 형식 지정하기

• Filter 속성 : 어떤 종류의 파일을 표시할 것인지를 결정– 기본 형식

설명 |*. 확장자 – 예제

control.Filter = "Windows Bitmaps (*.bmp)|*.bmp"; control.Filter = "Windows Bitmaps (*.bmp)|*.bmp|JPEG Files (*.jpg)|*.jpg";

7. 예제 프로시저에 다음 문장 입력openFileDialog1.Filter = "Text Files (*.txt)|*.txt"; openFileDialog1.FilterIndex = 1;

Page 7: 19장 파일 작업하기

파일 열기 대화상자 표시하기

8. 선택한 파일 이름을 txtSource 텍스트 상자에 보여주기 위해 , 프로시저에 다음 문장 입력if (openFileDialog1.ShowDialog() != DialogResult.Cancel) txtSource.Text = openFileDialog1.FileName; else txtSource.Text = "";

Page 8: 19장 파일 작업하기

파일 저장 대화상자 컨트롤 사용하기 

• 폼에 새로운 텍스트 상자를 추가하고 속성을 다음과 같이 설정• 저장하고자 하는 파일 이름을 지정할 수 있도록 , 폼에 새로운 버튼을

추가하고 , 속성을 다음과 같이 설정• 도구 모음에서 SaveFileDialog 항목을 더블클릭하여 프로젝트에 컨트롤

추가• btnSaveFile 버튼의 Click 이벤트에 다음 코드 추가

saveFileDialog1.Title = " 대상 파일 지정 "; saveFileDialog1.Filter = "Text Files (*.txt)|*.txt"; saveFileDialog1.FilterIndex = 1; saveFileDialog1.OverwritePrompt = true;

속성 값Name txtDestination

Location 95,4

Size 184,20

속성 값Name btnSaveFile

Location 8,40

Size 80,23

Text 대상 :텍스트 상자 속성 버튼 속성

Page 9: 19장 파일 작업하기

• 선택된 파일 이름을 txtDestination 텍스트 상자에 보여주기 위해 다음 코드 입력if (saveFileDialog1.ShowDialog() != DialogResult.Cancel) txtDestination.Text = saveFileDialog1.FileName;

• <F5> 를 눌러서 프로젝트를 실행하고 , 파일 선택

Page 10: 19장 파일 작업하기

File 객체를 통해 파일 처리하기

• 파일 시스템에서 하고자 하는 거의 모든 일을 위해서는 System.IO의 객체 속성 사용

• 특히 , System.IO.File 과 System.IO.Directory 객체를 사용하면 파일과 디렉터리 ( 폴더 ) 의 특별한 처리가 가능

Page 11: 19장 파일 작업하기

파일이 존재하는지 확인하기

• 복사 또는 삭제 등과 같은 모든 파일 관련 작업을 수행하기 전에는 파일이 존재하는지 확인하는 것이 바람직 함

• 파일이 존재하는지 확인하기 위해 System.IO.File 객체의 Exists() 메서드 사용

• 폼 클래스에 다음 함수를 추가한다 .bool SourceFileExists() { if (!System.IO.File.Exists(txtSource.Text)) { MessageBox.Show(" 원본 파일이 존재하지 않습니다 ."); return false; } else return true; }

Page 12: 19장 파일 작업하기

파일 복사하기• 파일 복사를 위해서는 System.IO.File 클래스의 Copy() 메서드 사용

1. 폼에 버튼을 새로 추가하고 속성을 다음과 같이 설정

2. Copy 버튼을 더블클릭하고 다음 코드를 추가한다 .if (!SourceFileExists()) return; System.IO.File.Copy(txtSource.Text, txtDestination.Text); MessageBox.Show(" 파일이 성공적으로 복사되었습니다 .");

3. 파일 복사코드 테스트하기

속성 값Name btnCopyFile

Location 96,80

Size 75,23

Text 복사

Page 13: 19장 파일 작업하기

파일 이동하기 ( 이름바꾸기 )• 파일을 이동시킬 때는 System.IO.File 객체의 Move() 메서드 사용• 파일이름을 바꿀때에도 System.IO.File 의 Move() 메서드 사용

1. 선택한 파일을 지정한 경로와 파일 이름으로 이동시키는 새로운 버튼을 폼에 추가하고 다음과 같이 속성 설정

2. Move 버튼을 더블클릭하고 , Click 이벤트에 다음 코드 추가if (!SourceFileExists()) return; System.IO.File.Move(txtSource.Text, txtDestination.Text); MessageBox.Show(" 파일이 성공적으로 이동되었습니다 .");

속성 값Name btnMove

Location 96,112

Size 75,23

Text 이동

Page 14: 19장 파일 작업하기

파일 삭제하기• System.IO.File 의 Delete() 메서드를 사용하면 파일이 영구적으로 삭제됨 (

파일이 휴지통으로 이동하지 않음 )

1. 버튼을 클릭하면 원본 파일을 삭제하도록 , 새로운 버튼을 추가하고 다음과 같이 속성 설정

2. 버튼을 더블클릭하고 버튼의 Click 이벤트에 다음 코드 추가if (!SourceFileExists()) return; if (MessageBox.Show(" 원본 파일을 정말 삭제하시겠습니까 ?", " 삭제 확인 ",MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { System.IO.File.Delete(txtSource.Text); MessageBox.Show(" 파일이 성공적으로 삭제되었습니다 ."); }

속성 값Name btnDelete

Location 96,144

Size 75,23

Text 삭제

Page 15: 19장 파일 작업하기

File 속성 알아내기

• 탐색기에서 파일 속성 보기– 탐색기를 열고 , 아무 파일을 마우스 오른쪽 버튼으로 클릭하고 속성을

선택하여파일의 속성 살펴보기• 코드를 통해 파일 속성 알아보기

– 일부 속성은 System.IO.File 객체에서 직접 알 수 있으며 , 다른 데이터들은 FileAttributes 객체 사용

Page 16: 19장 파일 작업하기

파일에 대한 날짜와 시간 정보 알아내기

• System.IO.File 객체는 이들 날짜에 대한 메서드 제공

속성 설명GetCreationTime 파일을 처음으로 생성한 날짜와 시간을 알려준다 .

GetLastAccessTime 파일에 마지막으로 접근한 날짜와 시간을 알려준다 .

GetLastWriteTime 파일을 마지막으로 수정한 날짜와 시간을 알려준다 .

Page 17: 19장 파일 작업하기

파일의 속성 알아내기

• 파일의 속성 알아내기– System.IO.File 의 GetAttributes() 메서드는 FileAttributes 열거형 값을

반환한다 .

속성 의미

Archive파일의 보관 상태 . 응용프로그램이 이 속성을 이용하여 백업이나 제거에 대해 파일에 표시를 한다 .

Directory 디렉토리

Hidden 파일이 숨김 파일이고 따라서 일반적인 디렉토리 리스트에는 포함되지 않는다 .

Normal 표준 . 다른 특성들이 설정되지 않는다 .

ReadOnly 읽기전용 파일

System 운영체제 파일의 일부이거나 운영체제가 독점적으로 사용한다 .

Temporary 임시 파일

Page 18: 19장 파일 작업하기

파일 속성을 읽어들이는 코드 작성하기

• Picture Viewer 프로젝트에서 화면에 표시되어있는 그림의 파일 속성을 볼 수 있도록 수정

• Toolstrip( 도구 모음 ) 에 새로운 도구 버튼을 추가하고 , 그 이름을 tbbGetFileAttributes 라고 변경

• 버튼의 이미지에 Properties.ico 를 지정하고 , ToolTipText 속성에 Get File Attributes 라고 입력

• 새 버튼을 더블클릭하고 버튼의 Click 이벤트에 다음페이지의 코드 입력

Page 19: 19장 파일 작업하기

// 파일이 열려 있는지 확인한다 . if ((ofdSelectPicture.FileName) == "") { MessageBox.Show(" 열린 파일이 없습니다 ."); return; }

// 문자열을 연결하기 위해 스트링 빌더 (string builder) 를 생성한다 . System.Text.StringBuilder stbProperties = new System.Text.StringBuilder(""); System.IO.FileAttributes fileAttributes;

// 데이터 불러오기 stbProperties.Append(" 생성 : "); stbProperties.Append(System.IO.File.GetCreationTime(ofdSelectPicture. FileName)); stbProperties.Append("\r\n"); stbProperties.Append(" 액세스 : "); stbProperties.Append(System.IO.File.GetLastAccessTime(ofdSelectPicture. FileName)); stbProperties.Append("\r\n"); stbProperties.Append(" 수정 : "); stbProperties.Append(System.IO.File.GetLastWriteTime(ofdSelectPicture. FileName));

// 파일 속성 불러오기 fileAttributes = System.IO.File.GetAttributes(ofdSelectPicture. FileName); stbProperties.Append("\r\n");

Page 20: 19장 파일 작업하기

// 특정 속성을 추출하기 위해 이진 AND 를 사용한다 . stbProperties.Append(" 표준 : "); stbProperties.Append( Convert.ToBoolean((fileAttributes & System.IO.FileAttributes.Normal) == System.IO.FileAttributes.Normal)); stbProperties.Append("\r\n");

stbProperties.Append(" 숨김 : "); stbProperties.Append( Convert.ToBoolean((fileAttributes & System.IO.FileAttributes.Hidden) == System.IO.FileAttributes.Hidden)); stbProperties.Append("\r\n");

stbProperties.Append(" 읽기전용 : "); stbProperties.Append( Convert.ToBoolean((fileAttributes & System.IO.FileAttributes.ReadOnly) == System.IO.FileAttributes.ReadOnly)); stbProperties.Append("\r\n");

stbProperties.Append(" 시스템 : "); stbProperties.Append( Convert.ToBoolean((fileAttributes & System.IO.FileAttributes.System) == System.IO.FileAttributes.System)); stbProperties.Append("\r\n");

Page 21: 19장 파일 작업하기

stbProperties.Append(" 임시 파일 : "); stbProperties.Append( Convert.ToBoolean((fileAttributes & System.IO.FileAttributes.Temporary) == System.IO.FileAttributes.Temporary)); stbProperties.Append("\r\n");

stbProperties.Append(" 보관 : "); stbProperties.Append( Convert.ToBoolean((fileAttributes & System.IO.FileAttributes.Archive) == System.IO.FileAttributes.Archive)); MessageBox.Show(stbProperties.ToString());

Page 22: 19장 파일 작업하기

파일속성 예제 실행결과

Page 23: 19장 파일 작업하기

Directory 객체를 사용하여 디렉토리 조작하기

• 디렉터리 생성System.IO.Directory.CreateDirectory(@"c:\my new directory");

• 디렉터리가 존재하는지 알아보기MessageBox.Show(Convert.ToString(System.IO.Directory.Exists (@"c:\temp")));

• 디렉터리 이동시키기System.IO.Directory.Move(@"c:\current directory name", @"d:\new directory name");

• 디렉터리 삭제하기System.IO.Directory.Delete(@"c:\temp", true);