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();
}
}
}
'개발일지 > C#' 카테고리의 다른 글
영업 관리 예제 (DB 연동) (0) | 2024.11.15 |
---|---|
윈폼 예제 (0) | 2024.11.13 |
파일 파싱 예제 (0) | 2024.11.11 |
회계 관리 프로그램 예제 (1) | 2024.11.09 |
인사 급여 관리 프로그램 예제 (0) | 2024.11.08 |