日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
重點(diǎn)講解VB.NET二進(jìn)制文件操作

VB.NET有很多值得學(xué)習(xí)的地方,這里我們主要介紹VB.NET二進(jìn)制文件。大家都知道所有文件的存儲其實(shí)質(zhì)都是二進(jìn)制的,VB.NET二進(jìn)制文件往往由兩部分組成,一部分是文件頭另一部分存放了文件的內(nèi)容。文件頭通常存放與文件格式有關(guān)的信息,以BMP等圖象文件為例,它們的文件頭中存放了是何種圖形格式、圖象大小、調(diào)色板等信息,要顯示圖象時先讀取文件頭以獲得文件的詳細(xì)信息,然后再按其格式把圖象內(nèi)容顯示出來。用二進(jìn)制方式可以操作任何的文件,當(dāng)然至關(guān)重要的一點(diǎn)是要清楚了解所操作文件的文件頭結(jié)構(gòu)。
#T#VB.NET二進(jìn)制文件操作主要應(yīng)用的方法和函數(shù)有:Open,Close,Get,Put等。

Open:在For后面的打開模式要用Binary。
Close:關(guān)閉文件。
Get:在指定位置取得文件的內(nèi)容,如果省略位置則從當(dāng)前位置讀取。
Put:在指定位置寫入文件,如果省略位置參數(shù)就從當(dāng)前位置寫。

下面結(jié)合代碼講解VB.NET二進(jìn)制文件的操作

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

4***文件的長度
4第二文件的長度
100***文件的二進(jìn)制內(nèi)容
200第二文件的二進(jìn)制內(nèi)容

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

 
 
  1. ‘實(shí)現(xiàn)文件的合并  
  2. Private Sub MergeFile()  
  3. Dim strFileName1 As String '***個文件  
  4. Dim strFileName2 As String '第二個文件  
  5. Dim strOutput As String '合并后的文件  
  6. Dim aryContent() As Byte '用來讀取文件的數(shù)組,每次讀取前要重定義  
  7. strFileName1 = "c:\a.bmp" 
  8. strFileName2 = "c:\.bmp" 
  9. strOutput = "c:\out.bmp" 
  10. '注意下面三個Open語句都是用Binary模式打開的  
  11. Open strOutput For Binary As #100  
  12. Open strFileName1 For Binary As #1  
  13. Open strFileName2 For Binary As #2  
  14. Put #100, , LOF(1) '取得***文件的長度,并把它寫入到合并文件的文件頭中  
  15. Put #100, , LOF(2) '取得第二文件的長度,并寫入到合并文件的文件頭中  
  16. ReDim aryContent(LOF(1) - 1) '重定義數(shù)組,為讀取文件做準(zhǔn)備  
  17. Get #1, , aryContent() '取得***文件的內(nèi)容到數(shù)組  
  18. Put #100, , aryContent() '把***文件的內(nèi)容寫到合并文件中  
  19. ReDim aryContent(LOF(2) - 1)  
  20. Get #2, , aryContent()  
  21. Put #100, , aryContent()  
  22. '關(guān)閉文件  
  23. Close #1  
  24. Close #2  
  25. Close #100  
  26. End Sub  
  27. ‘實(shí)現(xiàn)文件的拆分  
  28. Private Sub SplitFile()  
  29. Dim strFileName1 As String  
  30. Dim strFileName2 As String  
  31. Dim strFileSplit As String  
  32. Dim aryContent() As Byte  
  33. Dim lngLOF(1) As Long '存放從文件頭取得的兩個文件的長度  
  34. strFileName1 = "c:\a2.bmp" 
  35. strFileName2 = "c:\2.bmp" 
  36. strFileSplit = "c:\out.bmp" 
  37. Open strFileSplit For Binary As #100  
  38. Get #100, , lngLOF(0) '取得***文件的長度  
  39. Get #100, , lngLOF(1) '第二文件的長度  
  40. Open strFileName1 For Binary As #1  
  41. Open strFileName2 For Binary As #2  
  42. ReDim aryContent(lngLOF(0)-1) '用***文件的長度重定義數(shù)組,為讀取***文件做準(zhǔn)備  
  43. Get #100, 9, aryContent() '從第9字節(jié),即文件后面開始讀取***文件的內(nèi)容  
  44. Put #1, , aryContent() '把取得的內(nèi)容寫入到拆分文件中  
  45. ReDim aryContent(lngLOF(1)-1)  
  46. Get #100, 9 + lngLOF(0) + 1, aryContent() '從第9字節(jié)再加上***文件的長度處開始讀取第二文件的內(nèi)容,這里可以清楚地看到文件頭的作用了  
  47. Put #2, , aryContent  
  48. Close #1  
  49. Close #2  
  50. Close #100  
  51. MsgBox "拆分完成。", vbInformation 

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


當(dāng)前名稱:重點(diǎn)講解VB.NET二進(jìn)制文件操作
文章鏈接:http://m.5511xx.com/article/coddhso.html