日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VB 实现大文件的分割与恢复,引用 ADODB.Stream 提供一个过程代码

發布時間:2025/7/14 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VB 实现大文件的分割与恢复,引用 ADODB.Stream 提供一个过程代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

'VB 實現大文件的分割與恢復,引用 ADODB.Stream 提供一個過程:
'要引用 Microsoft ActiveX Data Objects 2.5 Libary
'或 Microsoft ActiveX Data Objects 2.6 Libary
Public Sub StreamSplit(SourceFile As String, DestinationFile As String, ChunkSize As Long, Optional BufferSize As Long = 64# * 1024#, Optional ShowFinishMessage As Boolean)
'ChunkSize 為 BufferSize 的倍數
Dim adoStreamS As New ADODB.Stream
adoStreamS.Type = adTypeBinary
adoStreamS.Open
adoStreamS.LoadFromFile SourceFile
Dim lFileSize As Long
lFileSize = adoStreamS.Size
Dim i As Long
Dim adoStreamT As New ADODB.Stream
adoStreamT.Type = adTypeBinary
Do While lFileSize >= ChunkSize * BufferSize
?? adoStreamT.Open
?? adoStreamT.Write adoStreamS.Read(ChunkSize * BufferSize)
?? adoStreamT.SaveToFile DestinationFile & "." & Format(i, "000"), IIf(Len(Trim(Dir(DestinationFile & "." & Format(i, "000")))) > 0, adSaveCreateOverWrite, adSaveCreateNotExist)
?? adoStreamT.Close
?? lFileSize = lFileSize - ChunkSize * BufferSize
?? i = i + 1
Loop
If lFileSize > 0 Then
?? adoStreamT.Open
?? adoStreamT.Write adoStreamS.Read(lFileSize)
?? adoStreamT.SaveToFile DestinationFile & "." & Format(i, "000"), IIf(Len(Trim(Dir(DestinationFile & "." & Format(i, "000")))) > 0, adSaveCreateOverWrite, adSaveCreateNotExist)
End If
If ShowFinishMessage Then
?? MsgBox "Finished!"
End If
End Sub

?

Public Sub StreamRestore(SourceFile As String, DestinationFile As String, Chunks As Long, Optional BufferSize As Long = 64# * 1024#, Optional ShowFinishMessage As Boolean)
Dim lFileSize As Long
Dim adoStreamT As New ADODB.Stream
adoStreamT.Type = adTypeBinary
adoStreamT.Open
Dim adoStreamS As New ADODB.Stream
adoStreamS.Type = adTypeBinary
Dim i As Long
For i = 0 To Chunks - 1 'Chunks 塊數
??? adoStreamS.Open
??? adoStreamS.LoadFromFile SourceFile & "." & Format(i, "000")
??? adoStreamT.Write adoStreamS.Read
??? adoStreamS.Close
Next i
adoStreamT.SaveToFile DestinationFile, IIf(Len(Trim(Dir(DestinationFile))) > 0, adSaveCreateOverWrite, adSaveCreateNotExist)
If ShowFinishMessage Then
?? MsgBox "Finished!"
End If
End Sub

'VB 實現大文件的分割與恢復,采用讀寫二進制數據的傳統經典代碼:
Public Sub FileSplit(SourceFile As String, DestinationFile As String, ChunkSize As Long, Optional BufferSize As Long = 64# * 1024#, Optional ShowFinishMessage As Boolean)
'ChunkSize 為 BufferSize 的倍數
Dim FileBuffer() As Byte
Dim FileNumberS As Long
Dim FileNumberT As Long
FileNumberS = FreeFile
Open SourceFile For Binary Access Read As #FileNumberS
Dim lFileLen As Long
lFileLen = FileLen(SourceFile)
FileNumberT = FreeFile
Dim i As Long
Dim j As Long
ReDim FileBuffer(1 To (BufferSize)) As Byte
Open DestinationFile & "." & Format(i, "000") For Binary Access Write As #FileNumberT
Do While lFileLen >= BufferSize
?? Get #FileNumberS, , FileBuffer
?? If i = ChunkSize Then
????? i = 0
????? j = j + 1
????? Close #FileNumberT
????? FileNumberT = FreeFile
????? Open DestinationFile & "." & Format(j, "000") For Binary Access Write As #FileNumberT
?? End If
?? i = i + 1
?? Put #FileNumberT, , FileBuffer
?? lFileLen = lFileLen - BufferSize
Loop
If lFileLen > 0 Then
?? ReDim FileBuffer(1 To lFileLen) As Byte
?? Get #FileNumberS, , FileBuffer
?? Put #FileNumberT, , FileBuffer
End If
Close #FileNumberT
If ShowFinishMessage Then
?? MsgBox "Finished!"
End If
End Sub
Public Sub FileRestore(SourceFile As String, DestinationFile As String, Chunks As Long, Optional BufferSize As Long = 64# * 1024#, Optional ShowFinishMessage As Boolean)
Dim FileBuffer() As Byte
Dim FileNumberS As Long
Dim FileNumberT As Long
Dim i As Long
Dim lFileLen As Long
FileNumberT = FreeFile
Open DestinationFile For Binary Access Write As #FileNumberT
For i = 0 To Chunks - 1
??? FileNumberS = FreeFile
??? Open SourceFile & "." & Format(i, "000") For Binary Access Read As #FileNumberS
??? lFileLen = FileLen(SourceFile & "." & Format(i, "000"))
??? ReDim FileBuffer(1 To BufferSize) As Byte
??? Do While lFileLen >= BufferSize
?????? Get #FileNumberS, , FileBuffer
?????? Put #FileNumberT, , FileBuffer
?????? lFileLen = lFileLen - BufferSize
??? Loop
??? If lFileLen > 0 Then
?????? ReDim FileBuffer(1 To lFileLen) As Byte
?????? Get #FileNumberS, , FileBuffer
?????? Put #FileNumberT, , FileBuffer
??? End If
??? Close #FileNumberS
Next i
Close #FileNumberT
If ShowFinishMessage Then
?? MsgBox "Finished!"
End If
End Sub

轉載于:https://www.cnblogs.com/Microshaoft/archive/2001/05/06/2485801.html

總結

以上是生活随笔為你收集整理的VB 实现大文件的分割与恢复,引用 ADODB.Stream 提供一个过程代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本www高清视频 | 亚洲视频在线免费播放 | 国产精品免费av一区二区 | 高潮av在线| 最新高清无码专区 | а√天堂资源在线 | 男女日批 | 狠狠干导航 | 亚洲欧洲日本在线 | 日韩三区在线 | 激情综合在线 | 成在线人免费视频 | 无码人妻精品一区二区蜜桃网站 | 久久人人添人人爽添人人片 | 丝袜美腿亚洲一区二区图片 | 日韩av男人天堂 | 日本国产一区二区 | 老熟妇仑乱一区二区av | 久久精品中文闷骚内射 | 性欧美在线 | 女人的天堂av在线 | 色吧综合网 | 日韩欧美偷拍 | www.黄色av | 亚洲综合日韩 | 婷婷色婷婷 | 久久靖品 | 专干中国老太婆hd | a∨鲁丝一区鲁丝二区鲁丝三区 | 国产三区视频 | 精品人妻伦一二三区久 | 加勒比日韩 | 女人天堂网站 | 激情超碰| av国产免费| 福利视频大全 | 国产一区二区久久 | 欧美日韩中文国产 | 久久成人综合 | 中文字幕日产 | 在线免费观看污 | 韩国电影大尺度在线观看 | 91蜜桃视频 | 久久77777| 成人片在线免费看 | 黄色片免费播放 | 成人免费aaa | 91视频精选| 久久久不卡国产精品一区二区 | 熟女熟妇伦久久影院毛片一区二区 | 亚洲爆乳无码精品aaa片蜜桃 | 一区二区在线播放视频 | av网在线| 欧美精品黄色 | 黄色一及片 | 日本一区视频在线播放 | 一本一道久久综合 | 亚洲图片欧美另类 | 国产精品一区二区三区久久久 | www四虎影院| 成人av专区| 日韩黄色一级大片 | 杨幂毛片午夜性生毛片 | 国产中文字幕二区 | 亚洲色图27p | 91丝袜视频 | 亚洲精品伦理 | 欧美福利一区 | 好爽又高潮了毛片 | 无码国精品一区二区免费蜜桃 | 日本女人一级片 | www.国产.com| 日韩av在线观看免费 | 日本免费黄色网 | 麻豆影视免费观看 | 日韩免费av一区二区 | 久一视频在线观看 | 裸体女视频 | 一区二区三区在线视频免费观看 | 色大师av一区二区三区 | 麻豆精品在线 | 国产精品视频一区二区三区, | 亚洲精品久久久久国产 | 在线观看v片 | 4438全国最大成人网 | 亚洲一区欧美二区 | 日韩性xx | 日韩免费一区二区三区 | 在线99热 | 麻豆视频免费观看 | 欧美人与性动交α欧美片 | 日韩免费视频一区二区视频在线观看 | 精品国产免费观看 | 污污视频网站在线免费观看 | 久久黄色影视 | 大尺度做爰无遮挡露器官 | 国产一级理论片 | 日本在线视频观看 | 超碰青娱乐 |