Wanna be Brilliant Full-Stack Developer
C# WINFORM StreamReader, StreamWriter 본문
텍스트파일을 불러오거나, 저장을 할때 쓴다!
불러올때는 Read니까 Reader 고 저장할때는 Write클래스를 사용한다.
사용목적이 ProgramFile 의 Log를 기록하기위해 쓴다고하는데 Log를 잘 남겨놓으면 프로그램이 문제가 있을때
원인을 찾기가 쉽다. 큰 프로그램일 수록 Log를 잘남기는 경우가 있다.
Log를 남기는건 그래서 굉장히 중요하다.
보통은 그냥 메모장 만들려고 쓸려고하는것이 아니라 프로그램 동작에 필요한 자료를 저장해 두거나
불러와서 사용하기 위해 많이 사용한다.
프로그램이 실행되는 폴더에 들어가게 된다. 이거 굉장히 많이 쓴다.
Application.StartupPath: 프로그램 실행 파일 위치!
여기서 OK는 Dialog의 저장 버튼이다.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Window;
namespace StreamReader_Write
{
public partial class Form1 : Form
{
/// <summary>
/// 진입점
/// </summary>
public Form1()
{
InitializeComponent();
}
/// <summary>
/// GroupBox 안에 있는 Data를 화면에 보여주기 위한 상단 TextBox로 보냄
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnConfigSet_Click(object sender, EventArgs e)
{
string strEnter = "\r\n";
string strText = tboxData.Text;
bool bChecked = cboxData.Checked;
int iNumber = (int)numData.Value;
StringBuilder sb = new StringBuilder();
sb.Append(strText + strEnter);
sb.Append(bChecked.ToString() + strEnter);
sb.Append(iNumber.ToString() + strEnter);
tboxConfigData.Text = sb.ToString();
}
/// <summary>
/// Main TextBox에 있는 문자를 텍스트 파일로 저장
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnSave_Click(object sender, EventArgs e)
{
string strFilePath = string.Empty;
SFDialog.InitialDirectory = Application.StartupPath; //프로그램 실행 파일 위치
SFDialog.FileName = "*.txt";
SFDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
if (SFDialog.ShowDialog() == DialogResult.OK)
{
strFilePath = SFDialog.FileName;
//// StreamWriter를 이용해서 텍스트 파일을 일어노는 부분을 구현
//StreamWriter swSFDialog = new StreamWriter(strFilePath);
//swSFDialog.WriteLine(tboxConfigData.Text);
//swSFDialog.Close();
File.WriteAllText(strFilePath, tboxConfigData.Text);
}
}
/// <summary>
/// 텍스트 파일을 읽어와서 Main TextBox에 보여 줌
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnLoad_Click(object sender, EventArgs e)
{
string strFilePath = string.Empty;
OFDialog.InitialDirectory = Application.StartupPath; //프로그램 실행 파일 위치
OFDialog.FileName = "*.txt";
OFDialog.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
StringBuilder sb = new StringBuilder();
if (OFDialog.ShowDialog() == DialogResult.OK)
{
strFilePath = OFDialog.FileName;
//// StreamReader를 이용해서 텍스트 파일을 일어노는 부분을 구현
//StreamReader srOFDialog = new StreamReader(strFilePath, Encoding.UTF8, true);
//while (srOFDialog.EndOfStream == false)
//{
// sb.Append(srOFDialog.ReadLine());
// sb.Append("\r\n");
//}
sb.Append(File.ReadAllText(strFilePath)); // 텍스트 파일을 String 형태로 한번에 읽어 옴
//string[] dd = File.ReadAllLines(strFilePath); // 텍스트 파일을 한줄 씩 String 배열 형태로 한번에 읽어 옴
tboxConfigData.Text = sb.ToString();
}
}
/// <summary>
/// Config Data를 Group Box안에 있는 Control들에 Set
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnConfigRead_Click(object sender, EventArgs e)
{
string[] strConfig = tboxConfigData.Text.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); // 문자열 안에있는 '\r\n'을 기준으로 split 시킴
tboxData.Text = strConfig[0];
cboxData.Checked = bool.Parse(strConfig[1]);
numData.Value = int.Parse(strConfig[2]);
}
}
}
'Some Memos > C#' 카테고리의 다른 글
C# WINFORMS Timer (Clicker Game) (0) | 2023.04.24 |
---|---|
C# WINFORMS XMLREADER, XMLWRITER (0) | 2023.04.24 |
C# WINFORMS 캡슐화, Partial Class (0) | 2023.04.14 |
C# Winforms 오버라이딩과 오버로딩 (0) | 2023.04.13 |
C# WINFORMS 상속 및 접근제어 #1 (0) | 2023.04.13 |