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

文章翻譯 文章翻譯
文章編號: 302309 - 檢視此文章適用的產品。
本文曾發行於 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 名稱區,並且在 System System.IO System.Collections 名稱區上,使用 Imports 陳述式,這樣您就不必在程式碼中,驗證這些名稱區的宣告了。不過要記住,這些陳述式一定要放在其他宣告的前面。
    Imports System
    Imports System.IO
    Imports 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",結束您的迴路。當您讀取該檔的每一行時,可以使用 ArrayList Add 方法,將這些字行插入 ArrayList 類別當中。
    Do
        sLine = objReader.ReadLine()
        If Not sLine Is Nothing Then
            arrText.Add(sLine)
        End If
    Loop Until sLine Is Nothing
    objReader.Close()
  6. 使用 "For Each" 迴路,將您剛剛填入的 ArrayList 內容寫到主控台,如下所示:
    For Each sLine In arrText
        Console.WriteLine(sLine)
    Next
    Console.ReadLine()
  7. 儲存並執行您的程式碼,該程式碼會產生一個檔案範例,送到主控台。

完整的程式碼範例

Imports System
Imports System.IO
Imports System.Collections

Module 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 Sub

End Module

陷阱

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

參考

其他相關資訊,請參閱下面這個 Microsoft .NET SDK QuickStart Tutorials 網站:
http://www.gotdotnet.com/quickstart


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

http://support.microsoft.com/support/kb/articles/Q302/3/09.asp

屬性

文章編號: 302309 - 上次校閱: 2001年10月25日 - 版次: 1.0
這篇文章中的資訊適用於:
  • Microsoft Visual Basic .NET 2002 Standard Edition
關鍵字:?
kbhowto kbhowtomaster kbnokeyword KB302309
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com