이 연습에서는 클래스를 사용하여 StreamReader 파일을 열고 읽고, 파일에 액세스하고 있는지 확인하고, 클래스 인스턴스 StreamReader 를 사용하여 읽은 파일 내에서 문자열을 검색하고, 클래스를 사용하여 StreamWriter 파일에 쓰는 방법을 보여 줍니다.
비고
컴퓨터는 다음 지침에서 Visual Studio 사용자 인터페이스 요소 중 일부에 대해 다른 이름 또는 위치를 표시할 수 있습니다. 가지고 있는 Visual Studio 버전과 사용하는 설정에 따라 이러한 요소가 결정됩니다. 자세한 내용은 IDE 개인 설정참조하세요.
애플리케이션 작성
Visual Studio를 시작하고 사용자가 지정된 파일에 쓰는 데 사용할 수 있는 양식을 만들어 프로젝트를 시작합니다.
프로젝트를 만들려면
파일 메뉴에서 새 프로젝트를 선택합니다.
새 프로젝트 창에서 Windows 애플리케이션을 클릭합니다.
이름 상자에 [확인]을 입력
MyDiary
하고 [확인]을 클릭합니다.Visual Studio는 솔루션 탐색기에 프로젝트를 추가하고 Windows Forms 디자이너 가 열립니다.
다음 표의 컨트롤을 폼에 추가하고 해당 속성에 해당하는 값을 설정합니다.
객체 | 속성 | 값 |
---|---|---|
Button |
이름 문자 메시지 |
Submit 항목 제출 |
Button |
이름 문자 메시지 |
Clear 항목 지우기 |
TextBox |
이름 문자 메시지 여러 줄 |
Entry 항목을 입력하세요. False |
파일에 쓰기
애플리케이션을 통해 파일에 쓰는 기능을 추가하려면 클래스를 StreamWriter 사용합니다. StreamWriter 는 특정 인코딩의 문자 출력을 위해 설계된 반면 Stream 클래스는 바이트 입력 및 출력용으로 설계되었습니다. 표준 텍스트 파일에 정보 줄을 쓰는 데 사용합니다 StreamWriter . 클래스에 대한 자세한 내용은 StreamWriter을 참조하세요 StreamWriter.
쓰기 기능을 추가하려면
보기 메뉴에서 코드를 선택하여 코드 편집기를 엽니다.
애플리케이션이 System.IO 네임스페이스를 참조하기 때문에 코드는 클래스 선언을 포함하는 폼 앞 부분에 다음 문을 추가해야 합니다
Public Class Form1
.Imports System.IO
파일에 쓰기 전에 클래스의 StreamWriter 인스턴스를 만들어야 합니다.
보기 메뉴에서 디자이너를 선택하여 Windows Forms 디자이너로 돌아갑니다. 단추를 두 번 클릭하여
Submit
단추에 Click 대한 이벤트 처리기를 만든 다음 다음 코드를 추가합니다.Dim fw As StreamWriter
비고
Visual Studio IDE(통합 개발 환경)는 코드 편집기로 돌아가서 코드를 추가해야 하는 이벤트 처리기 내에 삽입 지점을 배치합니다.
파일에 쓰려면 Write 클래스의 StreamWriter 메서드를 사용하십시오. 바로 다음에 다음 코드를
Dim fw As StreamWriter
추가합니다. 파일이 존재하지 않는 경우 생성되므로 파일을 찾을 수 없어 예외가 발생할 것을 걱정할 필요가 없습니다.Dim ReadString As String Try 'Pass the file path and name to the StreamWriter constructor. 'Indicate that Append is True, so file will not be overwritten. fw = New StreamWriter("C:\MyDiary.txt", True) ReadString = Entry.Text fw.WriteLine(ReadString) Finally 'Close the file. fw.Close() End Try
다음 코드를 바로 다음에
Dim ReadString As String
추가하여 사용자가 빈 항목을 제출할 수 없는지 확인합니다.If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then Entry.Text = "Please enter something." Return End If
일기이므로 사용자는 각 항목에 날짜를 할당하려고 합니다. 변수
fw = New StreamWriter("C:\MyDiary.txt", True)
를 현재 날짜로 설정하려면 다음 코드를Today
삽입합니다.Dim Today As DateTime Today = Now fw.Write(CStr(Today)) fw.Write(ControlChars.CrLf)
마지막으로 TextBox를 지우기 위한 코드를 추가하십시오.
Clear
코드를 단추의 Click 이벤트에 추가합니다.Entry.Text = ""
일기에 디스플레이 기능 추가
이 섹션에서는 최신 항목을 DisplayEntry
TextBox표시하는 기능을 추가합니다. 사용자가 항목을 선택하여 ComboBoxDisplayEntry
에 표시할 수 있도록 다양한 항목을 표시하는 TextBox를 추가할 수도 있습니다. 클래스의 인스턴스가 StreamReader에서 MyDiary.txt
를 읽습니다. 클래스 StreamWriter 와 StreamReader 마찬가지로 텍스트 파일과 함께 사용하기 위한 것입니다.
연습의 이 섹션에서는 다음 표의 컨트롤을 폼에 추가하고 해당 속성에 해당하는 값을 설정합니다.
제어 | 속성 | 가치들 |
---|---|---|
TextBox |
이름 보이는 크기 여러 줄 |
DisplayEntry False 120,60 True |
Button |
이름 문자 메시지 |
Display 표시 |
Button |
이름 문자 메시지 |
GetEntries 항목 가져오기 |
ComboBox |
이름 문자 메시지 활성화됨 |
PickEntries 항목 선택 False |
콤보 상자를 채우려면
사용자가
PickEntries
ComboBox 특정 날짜에서 항목을 선택할 수 있도록 사용자가 각 항목을 제출하는 날짜를 표시하는 데 사용됩니다. Click 이벤트 처리기를GetEntries
버튼에 만들고 다음 코드를 추가합니다.Dim fr As StreamReader = Nothing Dim FileString As String FileString = "" Try fr = New System.IO.StreamReader("C:\MyDiary.txt") PickEntries.Items.Clear() PickEntries.Enabled = True Do FileString = fr.ReadLine If IsDate(FileString) Then PickEntries.Items.Add(FileString) End If Loop Until (FileString Is Nothing) Finally If fr IsNot Nothing Then fr.Close() End If End Try PickEntries.Enabled = True
코드를 테스트하려면 F5 키를 눌러 애플리케이션을 컴파일한 다음 항목 가져오기를 클릭합니다. 항목 날짜를 표시하려면 드롭다운 화살표 ComboBox 를 클릭합니다.
개별 항목을 선택하고 표시하려면
단추에 Click 대한
Display
이벤트 처리기를 만들고 다음 코드를 추가합니다.Dim fr As StreamReader Dim ReadString As String 'Make sure ReadString begins empty. ReadString = "" Dim FileString As String fr = New StreamReader("C:\MyDiary.txt") 'If no entry has been selected, show the whole file. If PickEntries.Enabled = False Or PickEntries.SelectedText Is Nothing Then Do 'Read a line from the file into FileString. FileString = fr.ReadLine 'add it to ReadString ReadString = ReadString & ControlChars.CrLf & FileString Loop Until (FileString = Nothing) Else 'An entry has been selected, find the line that matches. Do FileString = fr.ReadLine Loop Until FileString = CStr(PickEntries.SelectedItem) FileString = CStr(PickEntries.SelectedItem) & ControlChars.CrLf ReadString = FileString & fr.ReadLine 'Read from the file until EOF or another Date is found. Do Until ((fr.Peek < 0) Or (IsDate(fr.ReadLine))) ReadString = ReadString & fr.ReadLine Loop End If fr.Close() DisplayEntry.Visible = True DisplayEntry.Text = ReadString
코드를 테스트하려면 F5 키를 눌러 애플리케이션을 컴파일한 다음 항목을 제출합니다. 항목 가져오기를 클릭하고 항목에서 ComboBox항목을 선택한 다음 표시를 클릭합니다. 선택한 항목의 내용이 에
DisplayEntry
TextBox표시됩니다.
사용자가 항목을 삭제하거나 수정할 수 있도록 설정
마지막으로 DeleteEntry
및 EditEntry
버튼을 사용하여 사용자가 항목을 삭제하거나 수정할 수 있는 추가 기능을 포함할 수 있습니다. 항목이 표시되지 않는 한 두 단추 모두 사용하지 않도록 설정된 상태로 유지됩니다.
다음 표의 컨트롤을 폼에 추가하고 해당 속성에 해당하는 값을 설정합니다.
제어 | 속성 | 가치들 |
---|---|---|
Button |
이름 문자 메시지 활성화됨 |
DeleteEntry 항목 삭제 False |
Button |
이름 문자 메시지 활성화됨 |
EditEntry 항목 편집 False |
Button |
이름 문자 메시지 활성화됨 |
SubmitEdit 편집 제출 False |
항목 삭제 및 수정을 사용하도록 설정하려면
Display
버튼의 Click 이벤트에,DisplayEntry.Text = ReadString
다음 코드를 추가합니다.DeleteEntry.enabled = True
단추에 Click 대한
DeleteEntry
이벤트 처리기를 만들고 다음 코드를 추가합니다.Dim fr As StreamReader Dim ReadString As String Dim WriteString As String Dim ConfirmDelete As MsgBoxResult fr = New StreamReader("C:\MyDiary.txt") ReadString = fr.ReadLine ' Read through the textfile Do Until (fr.Peek < 0) ReadString = ReadString & vbCrLf & fr.ReadLine Loop WriteString = Replace(ReadString, DisplayEntry.Text, "") fr.Close() ' Check to make sure the user wishes to delete the entry ConfirmDelete = MsgBox("Do you really wish to delete this entry?", MsgBoxStyle.OKCancel) If ConfirmDelete = MsgBoxResult.OK Then File.Delete("C:\MyDiary.txt") Dim fw As StreamWriter = File.CreateText("C:\MyDiary.txt") fw.WriteLine(WriteString) fw.Close() ' Reset controls on the form DisplayEntry.Text = "" PickEntries.Text = "" PickEntries.Items.Clear() PickEntries.Enabled = False DeleteEntry.Enabled = False End If
사용자가 항목을 표시하면 단추가
EditEntry
활성화됩니다. 다음 코드를 Click 다음에Display
버튼의DisplayEntry.Text = ReadString
이벤트에 추가합니다.EditEntry.Enabled = True
단추에 Click 대한
EditEntry
이벤트 처리기를 만들고 다음 코드를 추가합니다.Entry.Text = DisplayEntry.Text SubmitEdit.Enabled = True
단추에 Click 대한
SubmitEdit
이벤트 처리기를 만들고 다음 코드를 추가합니다.Dim fr As StreamReader Dim ReadString As String Dim WriteString As String If Entry.Text = "" Then MsgBox("Use Delete to Delete an Entry") Return End If fr = New StreamReader("C:\MyDiary.txt") ReadString = fr.ReadLine Do Until (fr.Peek < 0) ReadString = ReadString & vbCrLf & fr.ReadLine Loop WriteString = Replace(ReadString, DisplayEntry.Text, Entry.Text) fr.Close() File.Delete("C:\MyDiary.txt") Dim fw As StreamWriter = File.CreateText("C:\MyDiary.txt") fw.WriteLine(WriteString) fw.Close() DisplayEntry.Text = Entry.Text Entry.Text = "" EditEntry.Enabled = False SubmitEdit.Enabled = False
코드를 테스트하려면 F5 키를 눌러 애플리케이션을 컴파일합니다.
항목 가져오기를 클릭하고 항목을 선택한 다음 표시를 클릭합니다.
DisplayEntry
TextBox에 항목이 나타납니다.
항목 편집을 클릭합니다.
Entry
TextBox에 항목이 나타납니다. 항목을 Entry
TextBox 편집하고 [편집 제출]을 클릭합니다.
MyDiary.txt
파일을 열어 수정 내용을 확인합니다. 이제 항목을 선택하고 항목 삭제를 클릭합니다. 확인을 요청하면 MessageBox확인을 클릭합니다. 애플리케이션을 닫고 MyDiary.txt
을(를) 열어 삭제를 확인하십시오.
참고하십시오
.NET