23.04.13 Day53

오윤범·2023년 4월 13일
0
post-custom-banner

C#

File Handling

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace cs29_filehandling
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string curDirectory = @"C:\Temp";//현재 디렉토리(상대경로) / ..:부모
            Console.WriteLine("현재 디렉토리 정보");

            var dirs = Directory.GetDirectories(curDirectory);
            foreach (var dir in dirs)
            {
                var dirInfo=new DirectoryInfo(dir);

                Console.Write(dirInfo.Name);
                Console.WriteLine(" [{0}]",dirInfo.Attributes);
            }

            Console.WriteLine("\n현재 디렉토리 파일정보");
            var files = Directory.GetFiles(curDirectory);
            foreach(var file in files)
            {
                var fileInfo = new FileInfo(file);
                Console.WriteLine(fileInfo.Name);
                Console.WriteLine(" [{0}]",fileInfo.Attributes);
            }

            // 특정 경로 하위폴더/  하위파일 조회
            string path = @"C:\Temp\Csharp_Bank";//생성할 폴더
            string sfile = "Test.log";//생성할 파일

            if (Directory.Exists(path))
            {
                Console.WriteLine("경로 존재, 파일 생성");
                File.Create(path + @"\" + sfile); // C:\Temp\Csharp_Bank\Test.log
            }
            else // 실행 후 C:\Temp로 가보면 Csharp_Bank 폴더 생성, Test.log 파일 생성
            {
                //Console.WriteLine("{path} 해당 경로 없음", path);
                Console.WriteLine($"{path} 해당 경로 없음");//45행과 같은 의미, 매우 간결해짐
                Directory.CreateDirectory(path);

                Console.WriteLine("경로 생성, 파일 생성");
                File.Create(path + @"\" + sfile);
            }
        }
    }
}

File Read and Write

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace cs30_FileReadWrite
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string line = string.Empty;//텍스트 읽어와서 출력
            StreamReader reader = null;
            try
            {
                reader = new StreamReader(@".\python.py");//스트림리더 파일 연결
                line=reader.ReadLine(); //한줄씩 읽음
                while (line != null)
                {
                    Console.WriteLine(line);
                    line = reader.ReadLine();//계속해서 다음줄 읽어옴
                }
            }
            catch(Exception e)
            {
                Console.WriteLine($"{e.Message} 예외 발생");
            }
            finally//finally에 reader.close를 작성하여 반드시 종료
            {
                reader.Close();
            }

            // 파일 읽기 종료
            Console.WriteLine("\n==파일 읽기 종료==\n");

            StreamWriter writer = new StreamWriter(@".\pythonByCsharp.py");
            try
            {
                writer.WriteLine("import sys");
                writer.WriteLine();
                writer.WriteLine("print(sys.executable)");
            }
            catch(Exception e)
            {
                Console.WriteLine($"{e.Message} 예외 발생");
            }
            finally
            { writer.Close();}
            Console.WriteLine("파일 생성 완료");
        }
    }
}

--> 지정한 경로에 생성하고자 하는 파일 생성 됐음

C#(WPF)

Simple Notepad

  • Tabindex 수정
  • TabStop 수정
  • RichTextBox 사용
  • Form Minimumsize 지정
  • 각 도구들의 Anchor 수정
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 wf12_notepad
{
    public partial class FrmMain : Form
    {
        public FrmMain()
        {
            InitializeComponent();
        }

        private void BtnLoad_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Multiselect = false;//여러파일 선택 안되도록
            if(dialog.ShowDialog() == DialogResult.OK)
            {
                string fileName=dialog.FileName;
                TxtPath.Text = fileName;
                FileStream stream = null;
                StreamReader reader = null;
                try
                {
                    stream = new FileStream(fileName, FileMode.Open,FileAccess.Read);
                    reader = new StreamReader(stream,Encoding.UTF8);

                    RtbEditor.Text = reader.ReadToEnd();//끝까지 다 읽어옴
                }
                catch(Exception ex)
                {
                    MessageBox.Show($"오류! {ex.Message}", "Simple NotePad", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {
                    reader.Close();
                    stream.Close();
                }
            }
        }

        private void BtnSave_Click(object sender, EventArgs e)
        {
            string fileName = TxtPath.Text;
            FileStream stream = null;
            StreamWriter writer = null;
            try
            {
                stream=new FileStream(fileName, FileMode.Truncate,FileAccess.Write);
                writer = new StreamWriter(stream,Encoding.UTF8);

                writer.WriteLine(RtbEditor.Text);//RichTextbox에 있는 내용을 작성
                writer.Flush(); // Buffer의 데이터를 해당 스트림에 전송

                MessageBox.Show("Save Success!", "Simple NotePad",MessageBoxButtons.OK,MessageBoxIcon.Information);

            }
            catch (Exception ex)
            {
                MessageBox.Show($"오류! {ex.Message}", "Simple NotePad", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            finally
            {
                writer.Close();
                stream.Close();
            }
        }
    }
}

  • Load Button으로 파일을 읽어 올 수 있음

  • Save Button을 통해 파일의 내용 수정 후 저장 가능

  • 변경된 PythonByCsharp.py 파일 확인 할 수 있음

BookRentalShop 실습

https://docs.google.com/document/d/1ho9TMdMoCHPobw69RfjBFS8HIfhXUlsxTNVGByyPjLw/edit
해당 교안 참조

Visual Studio 코딩 시 들여쓰기 / 서식 엉망일 때 --> 편집 - 고급 - 문서 서식

1) usertbl 생성

2) BookRentalShop WinForms(.net) 생성 후 기존 Form1은 삭제하고 추가 - 새항목 - C#항목 - Windows Forms - MDI 부모 양식(이름:FrmMain) 생성
3) toolstrip 삭제, menuStrip 내용 수정
4) 추가 - 양식(FrmLogin)

BookRentalShop 실습 완료 된 후 정리해서 업로드 예정

post-custom-banner

0개의 댓글