|
|
Title | Make a file containing a list of numbers in two ways in VB .NET. |
Description | This example shows how to make a file containing a list of numbers in two ways in VB .NET. It makes the file using a StreamWriter one line at a time. It then makes the file by building the file's contents in a StringBuilder and then writing the result into a StreamWriter. It compares the speeds of these methods. |
Keywords | array, file, I/O, IO, StreamWriter, StringBuilder |
Categories | Files and Directories |
|
|
When the user clicks the StreamWriter button, the program uses a StreamWriter to write numbers into the file one line at a time.
|
|
Private Sub btnStreamWriter_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) Handles _
btnStreamWriter.Click
Dim start_time As Date = Now
' Open the file.
Dim stream_writer As New StreamWriter(txtFile.Text)
' Write the numbers.
Dim rand As New Random
Dim num As Integer = Integer.Parse(txtNumNumbers.Text)
For i As Integer = 1 To num
stream_writer.WriteLine(rand.Next(0, _
100000).ToString)
Next i
stream_writer.Close()
Dim stop_time As Date = Now
Dim elapsed_time As TimeSpan = _
stop_time.Subtract(start_time)
lblStreamWriter.Text = _
elapsed_time.TotalSeconds.ToString("0.0000")
End Sub
|
|
When the user clicks the StringBuilder button, the program generates the file's contents in a StringBuilder and then writes the whole thing at once into a StreamWriter.
|
|
Private Sub btnStringBuilder_Click(ByVal sender As _
System.Object, ByVal e As System.EventArgs) Handles _
btnStringBuilder.Click
Dim start_time As Date = Now
' Build a string containing all of the numbers.
Dim rand As New Random
Dim num As Integer = Integer.Parse(txtNumNumbers.Text)
' Allow 7 characters per number: 5 digits plus vbCRrLf.
Dim string_builder As New StringBuilder(num * 7)
For i As Integer = 1 To num
string_builder.Append(rand.Next(0, 100000).ToString)
string_builder.Append(vbCrLf)
Next i
' Write the string into the file.
Dim stream_writer As New StreamWriter(txtFile.Text)
stream_writer.Write(string_builder.ToString)
stream_writer.Close()
Dim stop_time As Date = Now
Dim elapsed_time As TimeSpan = _
stop_time.Subtract(start_time)
lblStringBuilder.Text = _
elapsed_time.TotalSeconds.ToString("0.0000")
End Sub
|
|
In my tests, the difference between these methods is very small. The StringBuilder version may be a few percent faster. Because the difference is so small, you should use whichever version is easier to understand.
|
|
|
|
|
|