Title: Section 8.1 Notes
1Section 8.1 Notes
- Modified By Evans Adams
- July 2004
28.1 Sequential Files
- A sequential file consists of data stored in a
text file on disk. - May be created using Notepad
- May also be created directly from VB.NET
3Creating a Sequential File
- Choose a filename may contain up to 215
characters - Select the path for the folder to contain this
file - Execute a statement like the following
- Dim sw As IO.StreamWriter IO.File.CreateText(fil
espec)
4Creating a Sequential File
- Place a line of data into the file with a
statement of the form - sw.WriteLine(datum)
- Close the file
- sw.Close()
5Caution !
- If an existing file is opened for output, the
computer will erase the existing file and create
a new one.
6Example 8.1.1
- Private Sub btnCreateFile_Click(...) Handles
btnCreateFile.Click -
- Open the file for output (creates a new, empty
file) - Dim sw As IO.StreamWriter IO.File.CreateText("
PIONEERS.TXT") - With sw
- .WriteLine("Atanasoff") Add lines to the file
- .WriteLine("Babbage")
- .WriteLine("Codd")
- .WriteLine("Dijkstra")
- .Close() Close the file
- End With
- End Sub
7Example 8.1.1
Private Sub btnDisplayFile_Click () Handles
btnDisplayFile.Click 'Display the contents of
the file PIONEERS.TXT in a list box Open
the file for input Dim sr As IO.StreamReader
IO.File.OpenText("PIONEERS.TXT")
lstNames.Items.Clear() Do While sr.Peek ltgt
-1 Read until end of file
lstNames.Items.Add(sr.ReadLine) Loop
sr.Close() Close the File End Sub
8Appending Items to the End of a Sequential File
- Execute the statement
- Dim sw As IO.StreamWriter IO.File.AppendText(
filespec) - where
- sw is a variable name and
- filespec identifies the file.
- Place data into the file with the WriteLine
method. - After all the data have been recorded into the
file, close the file with the statement - sw.Close()
9IO.File.AppendText
- Will add data to the end of an existing file
- If a file does not exist, it will create one
10Summary Sequential File Modes
- CreateText
- OpenText
- AppendText
- A file should not be opened in two different
modes at the same time.
11Avoiding Errors
- Attempting to open a non-existent file for input
causes the following error - 'System.IO.FileNotFound Exception occurred
- There is a method to determine if a file exists
before attempting to open it - IO.File.Exists(filespec)
- will return a True if the file exists
12Testing for the Existence of a File
- Dim sr As IO.StreamReader
- If IO.File.Exists(filespec) Then
- sr IO.File.OpenText(filespec)
- Else
- message "Either no file has yet been "
- message "created or the file named"
- message filespec " is not found."
- MsgBox(message, , "File Not Found")
- End If
13Deleting Information from a Sequential File
- An individual item of a file cannot be changed or
deleted directly. - A new file must be created by
- reading each item from the original file and
recording it, - with the single item changed or deleted,
- into the new file.
- The old file is then erased, and the new file
renamed with the name of the original file.
14Delete and Move Methods
- Delete method
- IO.File.Delete(filespec)
- Move method (to change the filespec of a file)
- IO.File.Move(oldfilespec, newfilespec)
- Note The IO.File.Delete and IO.File.Move methods
cannot be used with open files.
15Imports System.IO
- Simplifies programs that have extensive file
handling. - Place the statement
- Imports System.IO
- near the top of the Code window, just after
the Option Strict On statement. - Then, there is no need to insert the prefix IO.
before the words StreamReader, StreamWriter, and
File.
16Example 8.1.2
- Complete File Maintenance Program
- Too Large for Slides, Refer to the VB.NET program
for details
17Structures and Arrays
- Structures (and arrays of structures) are often
used to store data from a file in a program - See Example 7.3.3 (code on next slide)
18Example 7.3.3
Structure College Structure
definition Dim name As String Dim state
As String Dim yearFounded As Integer End
Structure Dim school(27) As College Array of
structures Private Sub Form1_Load () Handles
MyBase.Load 'Place the data for each college
into the array school() Dim i As Integer
Dim sr As IO.StreamReader IO.File.OpenText("COLL
EGES.TXT") Do While (sr.Peek ltgt -1) i
1 school(i).name sr.ReadLine
accessing individual elements of
school(i).state sr.ReadLine the array of
structures school(i).yearFounded
CInt(sr.ReadLine) Loop sr.Close() End
Sub
19Imports System.IO
- Simplifies programs that have extensive file
handling. - Place the statement
- Imports System.IO
- near the top of the Code window, just after
the Option Strict On statement. Then, there is
no need to insert the prefix IO. before the
words StreamReader, StreamWriter, and File.
20Structured Exception Handling
- Two types of problems in code
- Bugs something wrong with the code the
programmer has written - Exceptions errors beyond the control of the
programmer - Programmer can use the debugger to find bugs but
must anticipate exceptions in order to be able to
keep the program from terminating abruptly.
21How VB.NET Handles Exceptions
- An unexpected problem causes VB.NET first to
throw an exception then to handle it. - If the programmer does not explicitly include
exception-handling code in the program, then
VB.NET handles an exception with a default
handler. - The default exception handler terminates
execution, displays the exceptions message in a
dialog box and highlights the line of code where
the exception occurred.
22Exception Example
- If the user enters a word or leaves the input box
blank in the following program, an exception will
be thrown - Dim taxCredit As Double
- Private Sub btnComputeCredit_Click(...)
- Handles btnComputeCredit.Click
- Dim numDependants As Integer
- numDependants CInt(InputBox( _
- "How many dependants do you
have?")) - taxCredit 1000 numDependants
- End Sub
23Exception Handled by VB.NET
24Try Catch Block
- Dim taxCredit As Double
- Private Sub btnComputeCredit_Click(...)
- Handles btnComputeCredit.Click
- Dim numDependents As Integer, message As String
- Try
- numDependents CInt(InputBox("How many" _
- " dependents do you have?"))
- Catch
- message "You did not answer the question "
_ - " with an integer value. We will "
_ - " assume your answer is zero."
- MsgBox(message)
- numDependents 0
- Finally
- taxCredit 1000 numDependents
- End Try
- End Sub
25Catch Blocks
- VB.NET allows Try-Catch-Finally blocks to have
one or more specialized Catch clauses that only
trap a specific type of exception. - The general form of a specialized Catch clause is
- Catch exp As ExceptionName
- where the variable exp will be assigned the name
of the exception. The code in this block will be
executed only when the specified exception occurs.
26Try Catch Block Syntax
- Try
- normal code
- Catch exc1 As FirstException
- exception-handling code for FirstException
- Catch exc2 As SecondException
- exception-handling code for SecondException
- .
- .
- Catch
- exception-handling code for any remaining
exceptions - Finally
- clean-up code
- End Try
27Exception Handling and File Errors
- Exception handling can also catch file access
errors. - File doesn't exist causes an IO.FileNotFoundExcept
ion - If the Internet connection is broken an
IO.IOException error is thrown. - See Table 8.1 for common exceptions
28Example 8.1.3
- Refer to the VB.NET program for details
29(No Transcript)