熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

VB中文件操作的兩種方式

2013-11-13 10:12:00  來源: .NET編程 

  文本文件的操作

  此種方式是以行為單位進行讀取的基本單位主要應用的方法和函數有OpenCloseLine InputFreeFileEOF等下面先簡述其功能然後結合代碼示例進行說明

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

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

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

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

  例如

  Dim strFileName As String 文件名

  Dim lngHandle As Long 文件句柄

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

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

  strFileName = c:\btxt

  獲得文件的句柄

  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:\wtxt

  lngHandle = FreeFile() 取得句柄

  准備要寫入的內容

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

  Open strFileName For Output As lngHandle    打開文件

  Print #lngHandle strWrite    寫入文本

  Close lngHandle    關閉文件

  MsgBox 寫入完成 vbInformation

  二進制文件的操作

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

  VB中二進制文件操作主要應用的方法和函數有OpenCloseGetPut等

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

  Close:關閉文件

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

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

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

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

  第一文件的長度

  第二文件的長度

  第一文件的二進制內容

  第二文件的二進制內容

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

  實現文件的合並

  Private Sub MergeFile()

  Dim strFileName As String 第一個文件

  Dim strFileName As String 第二個文件

  Dim strOutput As String 合並後的文件

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

  strFileName = c:\abmp

  strFileName = c:\bbmp

  strOutput = c:\outbmp

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

  Open strOutput For Binary As #

  Open strFileName For Binary As #

  Open strFileName For Binary As #

  Put # LOF(取得第一文件的長度並把它寫入到合並文件的文件頭中

  Put # LOF(取得第二文件的長度並寫入到合並文件的文件頭中

  ReDim aryContent(LOF( 重定義數組為讀取文件做准備

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

  Put # aryContent() 把第一文件的內容寫到合並文件中

  ReDim aryContent(LOF(

  Get # aryContent()

  Put # aryContent()

  關閉文件

  Close #

  Close #

  Close #

  End Sub

  實現文件的拆分

  Private Sub SplitFile()

  Dim strFileName As String

  Dim strFileName As String

  Dim strFileSplit As String

  Dim aryContent() As Byte

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

  strFileName = c:\abmp

  strFileName = c:\bbmp

  strFileSplit = c:\outbmp

  Open strFileSplit For Binary As #

  Get # lngLOF(取得第一文件的長度

  Get # lngLOF(第二文件的長度

  Open strFileName For Binary As #

  Open strFileName For Binary As #

  ReDim aryContent(lngLOF(用第一文件的長度重定義數組為讀取第一文件做准備

  Get # aryContent() 從第字節即文件後面開始讀取第一文件的內容

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

  ReDim aryContent(lngLOF(

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

  Put # aryContent

  Close #

  Close #

  Close #

  MsgBox 拆分完成 vbInformation

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


From:http://tw.wingwit.com/Article/program/net/201311/12870.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.