
下面是内存溢出 jb51.cc 通过网络收集整理的代码片段。
内存溢出小编现在分享给大家,也给大家做个参考。
'VB 实现大文件的分割与合并,引用 ADODB.Stream 提供一个过程:'要引用 Microsoft ActiveX Data Objects 2.5 libary'或 Microsoft ActiveX Data Objects 2.6 libaryPublic 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.StreamadoStreamS.Type = adTypeBinaryadoStreamS.OpenadoStreamS.LoadFromfile SourcefileDim lfileSize As LonglfileSize = adoStreamS.SizeDim i As LongDim adoStreamT As New ADODB.StreamadoStreamT.Type = adTypeBinarydo 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 + 1LoopIf lfileSize > 0 Then adoStreamT.Open adoStreamT.Write adoStreamS.Read(lfileSize) adoStreamT.Savetofile Destinationfile & "." & Format(i,adSaveCreateNotExist)End IfIf ShowFinishMessage Then MsgBox "Finished!"End IfEnd SubPublic Sub StreamRestore(Sourcefile As String,Chunks As Long,Optional ShowFinishMessage As Boolean)Dim lfileSize As LongDim adoStreamT As New ADODB.StreamadoStreamT.Type = adTypeBinaryadoStreamT.OpenDim adoStreamS As New ADODB.StreamadoStreamS.Type = adTypeBinaryDim i As LongFor i = 0 To Chunks - 1 'Chunks 块数 adoStreamS.Open adoStreamS.LoadFromfile Sourcefile & "." & Format(i,"000") adoStreamT.Write adoStreamS.Read adoStreamS.CloseNext iadoStreamT.Savetofile Destinationfile,IIf(Len(Trim(Dir(Destinationfile))) > 0,adSaveCreateNotExist)If ShowFinishMessage Then MsgBox "Finished!"End IfEnd Sub'VB 实现大文件的分割与恢复,采用读写二进制数据的传统经典代码:Public Sub fileSplit(Sourcefile As String,Optional ShowFinishMessage As Boolean)'ChunkSize 为 BufferSize 的倍数Dim filebuffer() As ByteDim fileNumberS As LongDim fileNumberT As LongfileNumberS = FreefileOpen Sourcefile For Binary Access Read As #fileNumberSDim lfileLen As LonglfileLen = fileLen(Sourcefile)fileNumberT = FreefileDim i As LongDim j As LongReDim filebuffer(1 To (BufferSize)) As ByteOpen Destinationfile & "." & Format(i,"000") For Binary Access Write As #fileNumberTdo 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 - BufferSizeLoopIf lfileLen > 0 Then ReDim filebuffer(1 To lfileLen) As Byte Get #fileNumberS,filebuffer Put #fileNumberT,filebufferEnd IfClose #fileNumberTIf ShowFinishMessage Then MsgBox "Finished!"End IfEnd SubPublic Sub fileRestore(Sourcefile As String,Optional ShowFinishMessage As Boolean)Dim filebuffer() As ByteDim fileNumberS As LongDim fileNumberT As LongDim i As LongDim lfileLen As LongfileNumberT = FreefileOpen Destinationfile For Binary Access Write As #fileNumberTFor 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 End If Close #fileNumberSNext iClose #fileNumberTIf ShowFinishMessage Then MsgBox "Finished!"End IfEnd Sub
以上是内存溢出(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
总结以上是内存溢出为你收集整理的VB文件分割与合并全部内容,希望文章能够帮你解决VB文件分割与合并所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)