티스토리 뷰
======================================================
안녕하세요 Doridori 입니다.
Class까지 하고 복습 1강과 복습 2강을 통해서 지금 까지 한 내용들을 다시 한번 확인 해보고 드디어 새로운 강의를 가지고 돌아 왔습니다.
Class에서 이해가 어려웠던 부분이 있을것 같아서 복습 강의를 준비 했는데 근래 삼주 정도 개인적으로 이런저런 일이 많아서 정말 오랜만에 강의를 만드는 느낌이 들었습니다.
그래서 가볍게 시작 하려고 했는데 역시나 하다보니 이야기가 길어지네요 ^^;;
다시 달려 나가시죠~!
======================================================
StreamReader, StreamWriter
Source UI) Study_16_StreamReader_StreamWriter(UI).zip
Soruce 전체) Study_16_StreamReader_StreamWriter.zip
교재) 16강 StreamReader, StreamWriter.pdf
이번 강의에서는 텍스트를 저장하거나 불러오는 Class에 대해서 알아 보도록 하겠습니다.
기본적으로 StreamReader 과 StreamWriter Class를 사용 하게 됩니다. (System.IO 에 있습니다.)
사용 시 Log를 남기거나 읽어올 위치가 정해져 있을 경우에는 경로를 지정해서 쓰는 경우가 있지만 보통은 Dialog UI Control과 함께 사용 하게 됩니다.
따라서 이번에는 OpenFileDialog와 SaveFileDialog를 함께 사용법을 익혀 보도록 하겠습니다.
기본적으로 위의 4가지를 한다고 보시면 될것 같고 부가적으로 System.IO에 있는 또다른 File Class에 있는 텍스트를 읽거나 쓰는 함수에 대해서도 함께 보도록 하겠습니다.
UI의 경우 특별한 Control은 사용하지 않았습니다만 눈에 보이는 Control 외 OpenFileDialog와 SaveFileDialog Control을 추가하였습니다.
(기본적으로 컨트로를 Main Form으로 끌어다 놓을 경우 Form 하단에 Control Menu가 생기가 됩니다.)
단순하게 설정 값을 읽었다가 저장했다가 하는 용도로 사용해 보았는데 텍스트 형태로는 잘 사용 하지는 않지만 제가 혼자서 프로그램을 짜고 있을 때 프로그램 설정 값을 저장하는 형태로 많이 사용 하였습니다.
저같은 경우는 이후에 진행 할 xml과 DB 관련 된 내용으로 발전 시켜서 사용하게 되었습니다.
강의)
Source)
마지막에 StreamReader와 StreamWriter를 사용한 뒤 마지막에 File에 있는 함수로 변경하여 Stream관련 Class는 주석 처리 하였습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | 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; namespace _16_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]); } } } | cs |
'C# > C# 강좌 Winform' 카테고리의 다른 글
Doridori C# 강의) 18.Timer (Clicker Game 1) (6) | 2018.09.22 |
---|---|
Doridori C# 강의) 17. XMLReader, XMLWriter (25) | 2018.09.16 |
Doridori C# 강의) 15. 캡슐화( Encapsulation)와 Partial Class (20) | 2018.08.20 |
Doridori C# 강의) 14. 오버라이딩(Override)과 오버로딩(Overload) (6) | 2018.08.12 |
Doridori C# 강의) 13.상속(Inheritance) 및 접근제어 (18) | 2018.08.05 |
- Total
- Today
- Yesterday
- 하이볼
- 나들이
- 술
- 도리도리
- 프로그램 강의
- C# 기초 강의
- 아이랑
- 도리도리 C#
- 위스키
- 맛집
- 서울
- 모바일
- 소주
- 게임
- 가볼만한 곳
- 막걸리
- Visual Studio
- 보드카
- 전통주
- C#
- 맥주
- 가볼만한곳
- WinForm
- 광저우
- C# 강의
- 주말
- 칵테일
- C# 강좌
- 와인
- 증류주
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |