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 실습 완료 된 후 정리해서 업로드 예정