您目前已離線,請等候您的網際網路重新連線

如何:使用 System.IO 和 Visual Basic .NET 讀取文字檔

本文曾發行於 CHT302309
本文將討論一個 Beta 版的 Microsoft 產品,其中所有的資訊皆按現狀提供,如有更改,恕不另行通知。

Microsoft 並未針對這個 Beta 版產品,提供任何正式的產品支援。有關如何取得 Beta 版的支援,請參閱此 Beta 版產品檔案所檢附的文件,或者檢查您下載此版產品的 Web 位置。

有關本文的 Microsoft Visual C# .NET 版本,請參閱 306777
結論
本文將告訴您,如何從文字檔擷取資訊,以及用ArrayList類別來顯示這些資訊。本文一共有下列幾節:

基本需求

Microsoft Visual Basic .NET

在 Visual Basic .NET 讀取文字檔

開啟和讀取檔案,是輸入/輸出 (IO) 功能一個很重要的部份,即使不必寫入問題檔案也一樣。下例所示範的,是開啟一個檔案加以讀取,這個動作對於文字檔很有用,但對於二進位檔則不然。該例採用了其中一種開啟檔案的方法。雖然有許多資料結構都可以存放取自該檔的資訊,但ArrayList 類別是其中最好用的結構。本例在開啟和讀取檔案時,是採用來自 System.IO 名稱區的物件,尤其是 System.IO.StreamReader 類別。

注意:本範例要求您準備某種文字 (.txt) 檔表單,從這裡讀取。

要從 Visual Basic .NET 載入和讀取文字檔,請執行下列步驟:
  1. 開啟 Visual Studio .NET,在 Visual Basic .NET 建立新的主控台應用程式。Visual Studio 會為您建立一個模組,連同一個空的Main() 程序。
  2. 確定該專案至少要參照System 名稱區,並且在SystemSystem.IOSystem.Collections 名稱區上,使用Imports 陳述式,這樣您就不必在程式碼中,驗證這些名稱區的宣告了。不過要記住,這些陳述式一定要放在其他宣告的前面。
    Imports SystemImports System.IOImports System.Collections
  3. 如果要開啟檔案加以讀取,請建立一個新的StreamReader 物件案例,然後將該檔路徑傳到建構函式當中,如下所示:
    Dim objReader As New StreamReader("c:\test.txt")
  4. 您需要一個字串變數,在處理時存放檔案的每一行。由於這些字行要加入ArrayList 當中,因此也請一併宣告和建立該類型的物件。
    Dim sLine As String = ""Dim arrText As New ArrayList()
  5. 讀取該檔的方法有好幾種,其中包括一次讀取整個檔案的ReadToEnd方法在內。不過,在這個例子當中,您可以使用ReadLine方法,一次讀取一行。讀到檔案結尾時,這個方法會傳回 "Nothing",結束您的迴路。當您讀取該檔的每一行時,可以使用ArrayListAdd 方法,將這些字行插入ArrayList 類別當中。
    Do    sLine = objReader.ReadLine()    If Not sLine Is Nothing Then        arrText.Add(sLine)    End IfLoop Until sLine Is NothingobjReader.Close()
  6. 使用 "For Each" 迴路,將您剛剛填入的ArrayList內容寫到主控台,如下所示:
    For Each sLine In arrText    Console.WriteLine(sLine)NextConsole.ReadLine()
  7. 儲存並執行您的程式碼,該程式碼會產生一個檔案範例,送到主控台。

完整的程式碼範例

Imports SystemImports System.IOImports System.CollectionsModule Module1    Sub Main()        Dim objReader As New StreamReader("c:\test.txt")        Dim sLine As String = ""        Dim arrText As New ArrayList()        Do            sLine = objReader.ReadLine()            If Not sLine Is Nothing Then                arrText.Add(sLine)            End If        Loop Until sLine Is Nothing        objReader.Close()        For Each sLine In arrText            Console.WriteLine(sLine)        Next        Console.ReadLine()    End SubEnd Module

陷阱

下面是您在使用 I/O 時,必須注意的事項:
  • 存取檔案時,您要讀取或寫入的檔案不一定會在系統上,也有可能正在使用中。
  • 本例是先將整個檔案讀進記憶體中,再加以處理。這個方法可能會遇到檔案太大,記憶體容納不了,或是您不一定有權存取該檔的情況。
不管是哪一種情況,都會導致異常狀況發生。您最好準備一個try...catch 區塊來處理這些常見的問題。

參考

其他相關資訊,請參閱下面這個 Microsoft .NET SDK QuickStart Tutorials 網站:

本文件是根據 Microsoft Knowledgebase 文件編號 Q302309 翻譯的。若要參考原始英文文件內容,請至以下網址:

try-catch VB
內容

文章識別碼:302309 - 最後檢閱時間:10/25/2001 11:20:00 - 修訂: 1.0

Microsoft Visual Basic .NET 2002 Standard Edition

  • kbhowto kbhowtomaster kbnokeyword KB302309
意見反應