• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    VB中文件操作的兩種方式

    發布: 2007-5-25 09:19 | 作者: foolishtiger | 來源: 互聯網 | 查看: 32次 | 進入軟件測試論壇討論

    領測軟件測試網

    MILY: 宋體">VB中文件操作的兩種方式

     

    • 文本文件的操作

     

    此種方式是以行為單位進行讀取的基本單位,主要應用的方法和函數有Open,Close,Line Input,FreeFile,EOF等。下面先簡述其功能然后結合代碼示例進行說明。

    Open:顧名思義,它的作用是打開文件,換而言之打開某個文件就是獲得某個的控制權,一般情況下當文件處于打開狀態時只有打開者才能對它進行操作。打開文件時要指定一個整數作為文件號,以后的操作都是針對這個代號進行的,而不是針對文件名。文件號也叫句柄,在程序中一個文件號只能指向一個文件,不能出現兩個文件同時具有相同句柄的情況。

    Close:關閉文件,即釋放文件的控制權。

    Line Input:以行為單位取得文件內容,以行為單位是指從當前位置開始到下一個換行符為止的內容。換行符是Chr(13) & Chr(10)兩個字節組成,VB中已定義了常量vbCrLf,可直接使用。要注意的是Line Input讀取一行時會把行尾的換行符去掉,因此我們在讀取每行內容時要記得補上換行符才能保持得到的內容與文件一致。

    FreeFile:得到空閑的文件號,用這個函數取得文件號可以避免文件號的沖突。

    例如:

        Dim strFileName As String '文件名

        Dim lngHandle As Long '文件句柄

        Dim strAll As String '所讀取的文本文件的所有內容

        Dim strLine As String '在循環中存放每行的內容

       

        strFileName = "c:\b.txt"

       

        '獲得文件的句柄

        lngHandle = FreeFile()

       

        'For后面的參數表示以何種方式打開文件,Input是讀取,Output是覆蓋寫入,Append是追加寫入

        Open strFileName For Input As lngHandle

       

        '循環直到文件尾

        Do While Not EOF(lngHandle)

            '每次讀取一行存放在strLine變量中

            Line Input #lngHandle, strLine

            '每次讀取都把所讀到的內容連接到strAll變量,由于Line Input去掉了換行符,所以這里補上

            strAll = strAll & strLine & vbCrLf

        Loop

       

        '顯示得到的全部分內容

    MsgBox strAll, vbInformation

     

     

        對文本文件的寫入相對簡單些,有三個步驟:打開文件,寫入文本,關閉文件。

    代碼示例:

        Dim strFileName As String '文件名

        Dim lngHandle As Long '句柄

        Dim strWrite As String '要寫入的文本內容

       

        strFileName = "c:\w.txt"

        lngHandle = FreeFile() '取得句柄

       

        '準備要寫入的內容

        strWrite = "落日樓頭,斷鴻聲里,江南游子。把吳鉤看了,欄干拍遍,無人會、登臨意。"

       

        Open strFileName For Output As lngHandle    '打開文件

        Print #lngHandle, strWrite    '寫入文本

        Close lngHandle    '關閉文件

       

    MsgBox "寫入完成。", vbInformation

     

    • 二進制文件的操作

     

        所有文件的存儲其實質都是二進制的,二進制文件往往由兩部分組成,一部分是文件頭另一部分存放了文件的內容。文件頭通常存放與文件格式有關的信息,以BMP等圖象文件為例,它們的文件頭中存放了是何種圖形格式、圖象大小、調色板等信息,要顯示圖象時先讀取文件頭以獲得文件的詳細信息,然后再按其格式把圖象內容顯示出來。用二進制方式可以操作任何的文件,當然至關重要的一點是要清楚了解所操作文件的文件頭結構。

       

        VB中二進制文件操作主要應用的方法和函數有:Open,Close,Get,Put等。

    Open:在For后面的打開模式要用Binary。

    Close:關閉文件。

    Get:在指定位置取得文件的內容,如果省略位置則從當前位置讀取。

    Put:在指定位置寫入文件,如果省略位置參數就從當前位置寫。

     

        下面結合代碼講解二進制文件的操作。

    下述程序完成了將兩個文件結合成一個文件以及將這個結合后的文件再拆分成原來的兩個文件。文件頭的結構是自己定義的,非常簡單,共8個字節(也就是兩個長整型的長度),前4個字節存放第一個文件的長度,后4個字節存放第二個文件的長度。為了更直觀地表達文件的結構,現假設有兩個文件,第一個文件長度是100字節,第二個文件是200字節,那么合并后得到的文件應該是308字節。按順序來看,文件的結構是:

    4第一文件的長度

    4第二文件的長度

    100第一文件的二進制內容

    200第二文件的二進制內容

    除了文件頭的8字節長度是固定的后面的長度都會因文件的不同而變化的。

     

    ‘實現文件的合并

    Private Sub MergeFile()

        Dim strFileName1 As String '第一個文件

        Dim strFileName2 As String '第二個文件

        Dim strOutput As String '合并后的文件

        Dim aryContent() As Byte '用來讀取文件的數組,每次讀取前要重定義

       

        strFileName1 = "c:\a.bmp"

        strFileName2 = "c:\b.bmp"

        strOutput = "c:\out.bmp"

       

        '注意下面三個Open語句都是用Binary模式打開的

        Open strOutput For Binary As #100

       

        Open strFileName1 For Binary As #1

        Open strFileName2 For Binary As #2

       

        Put #100, , LOF(1) '取得第一文件的長度,并把它寫入到合并文件的文件頭中

        Put #100, , LOF(2) '取得第二文件的長度,并寫入到合并文件的文件頭中

       

        ReDim aryContent(LOF(1) - 1) '重定義數組,為讀取文件做準備

        Get #1, , aryContent() '取得第一文件的內容到數組

       

        Put #100, , aryContent() '把第一文件的內容寫到合并文件中

       

        ReDim aryContent(LOF(2) - 1)

        Get #2, , aryContent()

       

        Put #100, , aryContent()

       

        '關閉文件

        Close #1

        Close #2

        Close #100

    End Sub

    ‘實現文件的拆分

    Private Sub SplitFile()

        Dim strFileName1 As String

        Dim strFileName2 As String

        Dim strFileSplit As String

        Dim aryContent() As Byte

        Dim lngLOF(1) As Long '存放從文件頭取得的兩個文件的長度

       

        strFileName1 = "c:\a2.bmp"

        strFileName2 = "c:\b2.bmp"

        strFileSplit = "c:\out.bmp"

       

        Open strFileSplit For Binary As #100

       

        Get #100, , lngLOF(0) '取得第一文件的長度

        Get #100, , lngLOF(1) '第二文件的長度

       

        Open strFileName1 For Binary As #1

        Open strFileName2 For Binary As #2

       

        ReDim aryContent(lngLOF(0)-1) '用第一文件的長度重定義數組,為讀取第一文件做準備

        Get #100, 9, aryContent() '從第9字節,即文件后面開始讀取第一文件的內容

        Put #1, , aryContent() '把取得的內容寫入到拆分文件中

       

        ReDim aryContent(lngLOF(1)-1)

        Get #100, 9 + lngLOF(0) + 1, aryContent() '從第9字節再加上第一文件的長度處開始讀取第二文件的內容,這里可以清楚地看到文件頭的作用了

        Put #2, , aryContent

       

        Close #1

        Close #2

        Close #100

       

        MsgBox "拆分完成。", vbInformation

     

    文本文件由于沒有格式所以它的讀寫都比較簡單和直觀,而用二進制操作文件時其實質就是對文件頭的理解,如果不知道文件頭的結構那就無法對文件進行處理了,知道了文件頭所包含的信息后,對文件的操作其實就是按規則進行Get、Put罷了。

     

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>