【前言】
數值地形模型(DTM)的處理是空間資訊科學的基礎。在學習了 FORTRAN 與 VB6 的處理方式後,我們必須面對現代化的開發環境。VB.NET 與過往的 VB6 在許多設計哲學上有很大的不同,這主要是為了與 .NET Framework 完整接軌。對於習慣傳統 VB 的程式設計師來說,現在正是「換換腦袋」的時候了。
本系列涵蓋內容:
- 如何用 FORTRAN 讀取 DTM 資料檔案? (Visual FORTRAN)
- 如何用 Visual Basic 讀取 DTM 資料檔案? (VB6)
- 讀取和寫入二進位檔案 (VB.NET)
- 如何用 Visual Basic 讀取 DTM 資料檔案? (VB.NET)
(3) 讀取和寫入二進位檔案 (VB.NET)
在 .NET Framework 中,BinaryWriter 和 BinaryReader 類別是用來處理原始資料(如整數、浮點數)而非純文字字串的首選工具。
程式實作流程:
- 檢查並建立檔案:在目前目錄中建立一個名為
Test.data的檔案資料流。 - 建立寫入器:建立
BinaryWriter物件。 - 寫入資料:使用
BinaryWriter將整數 0 至 10 寫入檔案。此時檔案指標會停留在結尾。 - 建立讀取器:關閉寫入流後,重新以讀取權限開啟檔案,並建立
BinaryReader。 - 讀出資料:將資料依序讀出並顯示在主控台。
【VB.NET 範例原始碼:MyStream】
Option Explicit On
Option Strict On
Imports System
Imports System.IO
Class MyStream
Private Const FILE_NAME As String = "Test.data"
Public Shared Sub Main()
' 1. 建立一個新的空白資料檔案
If File.Exists(FILE_NAME) Then
Console.WriteLine("{0} already exists!", FILE_NAME)
Return
End If
Dim fs As New FileStream(FILE_NAME, FileMode.CreateNew)
' 2. 建立資料寫入器 (BinaryWriter)
Dim w As New BinaryWriter(fs)
' 3. 把整數資料 0-10 寫入檔案中
Dim i As Integer
For i = 0 To 10
w.Write(CInt(i))
Next i
w.Close()
fs.Close()
' 4. 建立資料讀取器 (BinaryReader)
' 以開啟模式與讀取權限重新進入檔案
fs = New FileStream(FILE_NAME, FileMode.Open, FileAccess.Read)
Dim r As New BinaryReader(fs)
' 5. 從檔案中讀出資料並顯示
For i = 0 To 10
Console.WriteLine(r.ReadInt32())
Next i
r.Close()
fs.Close()
End Sub
End Class
整理說明:
- 技術轉型:這裡特別提到 VB.NET 是對 .NET Framework 的「妥協」,這反映了當時從傳統 COM-based 的 VB6 轉移到受控代碼(Managed Code)環境時,開發者的心境與技術門檻的提升。
- 強型別要求:範例中使用了
Option Strict On,這在處理二進位 DTM 資料時非常重要,能避免因隱含型別轉換而導致的高程數值錯誤。











