VB中檔案操作的兩種方式

2021-04-26 07:59:56 字數 4238 閱讀 1549

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()

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罷了。

VB中檔案操作的兩種方式

vb中檔案操作的兩種方式 文字檔案的操作 此種方式是以行為單位進行讀取的基本單位,主要應用的方法和函式有open,close,line input,freefile,eof等。下面先簡述其功能然後結合 示例進行說明。open 顧名思義,它的作用是開啟檔案,換而言之開啟某個檔案就是獲得某個的控制權,一...

檔案修改的兩種方式

whw.txt檔案中有一下內容 張三 13333333333 小李 15555555555 王二麻 12222222222 編寫程式實現檔案內容的修改 方法一 佔硬碟的修改方式 需要新建乙個檔案 import osf name whw.txt f new name s.new f name old ...

VB登入介面的兩種實現方式

由於框架內容已基本完成,下面就可以做些業戶性質的任務了。首先是登入介面的設計,常見的登入介面有兩種 第一種設程式在開始執行時顯示乙個登入視窗,驗證正確後才可以進入程式中,如qq。vb實現 vb程式的啟動可以設定為從登入窗體啟動,即工程 工程屬性 啟動物件,選擇要啟動的窗體即可。我一般喜歡從sub m...