[VB.NET] 공통대화상자 - SaveFileDialog 사용법

2023. 2. 23. 17:00VB.NET/왕초보

지난 강좌에서 알아본 OpenFileDialog와 커플로 사용되는 대화상자가 바로 SaveFileDialog이다. 지난 강좌의 프로젝트에 이어서 작성해보자.

폼에 SaveFileDialog 1개, Button 1개를 아래와 같이 생성하자.

Type Name Text
SaveFileDialog DialogSaveFile 해당사항 없음
Button ButtonSaveFile &SaveFile

ButtonSaveFile의 Click 이벤트에 아래 소스 입력

Private Sub ButtonSaveFile_Click(sender As Object, e As EventArgs) Handles ButtonSaveFile.Click

    DialogSaveFile.Title = "저장하기"
    DialogSaveFile.Filter = "Text Files (*.txt)|*.txt|All files (*.*)|*.*"
    DialogSaveFile.FilterIndex = 1
    DialogSaveFile.RestoreDirectory = True
    DialogSaveFile.FileName = ""

    If DialogSaveFile.ShowDialog() = DialogResult.OK Then
        My.Computer.FileSystem.WriteAllText(DialogSaveFile.FileName, TextContent.Text, False, System.Text.Encoding.Default)
    End If

End Sub

실행후 텍스트박스에 간단한 내용을 입력하고 저장버튼을 눌러서 아래 화면이 나오면 성공

파일 저장하기 대화상자

이전 파일 열기 대화상자를 제대로 읽어보신 분들이라면 여기서 설명할게 따로 없다는걸 알 수 있을 것이다. 모든 항목이 동일하니 다른 설명은 넘어가고 마지막 If문 안에 있는 WriteAllText 함수에 대해서 알아보자.

이걸 알아보려면 지난번 강좌에서 살펴봤던 ReadAllText와 쌍으로 이루어져 있으니 함께 알아보자.

My.Computer.FileSystem.WriteAllText(DialogSaveFile.FileName, TextContent.Text, False, System.Text.Encoding.Default)
My.Computer.FileSystem.ReadAllText(DialogOpenFile.FileName, System.Text.Encoding.Default)

함수명 그대로 WriteAllText는 텍스트파일에 쓰는거고, ReadAllText는 텍스트파일을 읽는것이다. 이와 비슷한게 WriteAllBytes와 ReadAllBytes도 있다. 텍스트파일인지 이진파일인지만 다를뿐 사용법은 동일하다.

이제 WriteAllText의 파라미터를 살펴보자.

1. DialogSaveFile.FileName
저장할 파일명. 경로를 포함해야 하며 경로가 없을 경우 실행파일의 위치에 저장된다.

2. TextContent.Text
파일로 저장할 문자열.

3. False
기존파일에 추가할지 여부. False면 기존에 파일이 있을 경우 덮어씀. True면 기존 파일 뒤에 현재 문자열을 추가

4. System.Text.Encoding.Default
텍스트 인코딩 방식 설정. 텍스트 인코딩 관련해서는 추후에 따로 강좌를 파서 진행해보도록 하겠다. 여기서는 파일을 열었을때 알파벳이나 숫자는 멀쩡한데 한글이 깨지면 이 인코딩을 다른걸로 바꿔주면 대부분 해결할 수 있다는 정도만 알고 넘어가자.

이렇게 파일 저장 대화상자도 끝이났다. 사실 대화상자 관련해서는 메시지박스, 파일열기 대화상자, 파일저장 대화상자 이렇게까지만 하려고 했는데 폴더, 컬러, 폰트, 인쇄, 인쇄 미리보기, 페이지설정등 기본 제공하는 대화상자가 눈에 밟혀서 일단 이들 대화상자를 하나씩 정복해보도록 하자.

반응형