본문 바로가기
개발일지/C#

텍스트 형태의 파일 입출력 예제

by 태운콩즙 2024. 11. 12.
728x90
반응형

C# 에서 파일 입출력을 하려면 C# 개발 환경에서 지원해주는 클래스를 사용하여야 한다 이 기능은 System.IO 네임스페이스에 존재하므로 프로그램 처음 부분에서 아래 코드를 항상 사용하여야 한다

using System.IO;

텍스트 형식의 데이터를 파일에 출력(저장) 하기 위해서는 아래 코드와 같이 StreamWriter 객체를 생성 하여야 한다

StreamWriter wFile = new StreamWriter(new FileStream("memo.txt",FileMode.Create));
wFile.WriteLine("Hello Word");
wFile.Close();

위 코드에서 “memo.txt” 파일에 텍스트를 저장할 수 있는 객체가 생성되었는데 파일을 무조건 새로 생성하는 옵션(FileMode.Create)을 사용하였다 문자열 한 줄을 저장하는 WriteLine(문자열) 메소드를 사용 하고 줄 바꿈 없이 문자열을 저장 하려면 Write(문자열) 메소드를 사용한다 텍스트 형식의 데이터를 파일에서 읽어오기 위해서는 아래 코드와 같이 StreamReder 객체를 생성 해야 한다

StreamReder rFile = new SreamReder(new FileStream("memo.txt",FileMode.Open));
string line = rFile.ReadLine();
rFile.Close();

위 코드에서 “memo.txt”파일 내용을 C# 프로그램 안으로 읽어 올 수 있는 객체가 생성 되었는데 기존 파일을 여는 옵션 (FileMode.Open)을 사용 하였다 문자열 한 줄을 읽는 것 은 ReadLine() 메소드를 사용 한다

C#에서 파일을 다루는 옵션은 아래와 같다

모드 사용법

FileMode.Append 기존 파일을 열고 파일 끝까지 이동해서 데이터 쓰기를 준비한다
FileMode.Create 새로운 파일을 생성한다 동일한 이름의 기존 파일은 사라진다
FileMode.Open 명시된 파일 명을 찾아 기존 파일을 열어 쓰기 준비한다 파일이 없으면 에러(FileNotFoundException)가 발생한다
FileMode.OpenOrCreate 파일이 있으면 열고 없으면 새로운 파일을 생성한다

위 코드에서 파일 입출력을 위해 사용된 객체의 Close() 메소드를 사용하여 운영 체제에 파일 사용이 끝났음을 알리는 절차를 꼭 해줘야 한다 이렇게 해제 하지 않으면 차후 해당 파일을 사용 할 때 에러가 발생 할 수도 있다

Form

 

 

파일 저장 버튼을 더블 클릭 하면 이벤트 핸들러가 생성되고{} 내부의 코드는 다음과 같다

 private void btnSave_Click(object sender, EventArgs e)
 {
     if (string.IsNullOrEmpty(txtSaveFileName.Text))
     {
         MessageBox.Show("파일 이름을 입력하세요"); // 텍스트 박스가 비어있으면
         return;
     }
     else
     {
         MessageBox.Show("파일이 저장 되었습니다");

     }
     StreamWriter wFile = new StreamWriter(new FileStream(txtSaveFileName.Text, FileMode.Create));
     wFile.Write(txtMemo.Text); // 텍스트 박스 내용을 파일에 저장한다
     wFile.Close();
 }

파일 불러오기 버튼을 더블 클릭 하면 이벤트 핸들러가 생성되고{} 내부의 코드는 다음과 같다

        private void btnOpen_Click(object sender, EventArgs e)
        {
            txtMemo.Text = "";
            StreamReader rFile = new StreamReader(new FileStream(txtOpenFileName.Text, FileMode.Open));
            while (rFile.EndOfStream == false)
            {
                if (string.IsNullOrEmpty(txtOpenFileName.Text)) // 텍스트 박스가 비어있으면
                {
                    MessageBox.Show("불러올 파일명을 입력하세요");
                    return;
                }
                else
                {
                    MessageBox.Show("파일을 불러왔습니다" + Path.GetFullPath(txtOpenFileName.Text));
                }

                txtMemo.Text += rFile.ReadLine();
                txtMemo.Text += "\\r\\n";
            }
            rFile.Close();
        }
    }
}

<전체 코드>

using System;
using System.IO;
using System.Windows.Forms;

namespace MemoEditor_EX
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(txtSaveFileName.Text))
            {
                MessageBox.Show("파일 이름을 입력하세요"); // 텍스트 박스가 비어있으면
                return;
            }
            else
            {
                MessageBox.Show("파일이 저장 되었습니다");

            }
            StreamWriter wFile = new StreamWriter(new FileStream(txtSaveFileName.Text, FileMode.Create));
            wFile.Write(txtMemo.Text); // 텍스트 박스 내용을 파일에 저장한다
            wFile.Close();
        }

        private void btnOpen_Click(object sender, EventArgs e)
        {
            txtMemo.Text = "";
            StreamReader rFile = new StreamReader(new FileStream(txtOpenFileName.Text, FileMode.Open));
            while (rFile.EndOfStream == false)
            {
                if (string.IsNullOrEmpty(txtOpenFileName.Text)) // 텍스트 박스가 비어있으면
                {
                    MessageBox.Show("불러올 파일명을 입력하세요");
                    return;
                }
                else
                {
                    MessageBox.Show("파일을 불러왔습니다" + Path.GetFullPath(txtOpenFileName.Text)/**파일 경로 불러오기**/);
                }

                txtMemo.Text += rFile.ReadLine();
                txtMemo.Text += "\\r\\n";
            }
            rFile.Close();
        }
    }
}

728x90
반응형

'개발일지 > C#' 카테고리의 다른 글

영업 관리 예제 (DB 연동)  (0) 2024.11.15
윈폼 예제  (0) 2024.11.13
파일 파싱 예제  (0) 2024.11.11
회계 관리 프로그램 예제  (1) 2024.11.09
인사 급여 관리 프로그램 예제  (0) 2024.11.08