看網上的寫得很長,但是我沒法用。。。。。
我想要的是:把 C:\MyFile 檔案夾下名為 1.mpq 和所有名為*.dss的檔案打包,(C:\MyFile里面還有其他雜檔案),還有恢復的時候還是恢復成1.mpq.和*.dss原來的名字。。
這是我網上找的,應該怎么改成我想要的??
'這應該是檔案的分割與合并問題
'這是我以前撰寫的,稍加修改后提供給你,希望有用
'例子:將 C:\MyFile 目錄下的檔案合并為 C:\MyText.txt
'假設此目錄有兩個檔案:My1.txt、My2.txt,這兩個檔案都不是空檔案
'實際上任何檔案型別都可合并,合并后的檔案也可任意取擴展名
'首先,在表單上添加控制元件:File1,Command1,Command2
Private Sub Form_Load()
Command1.Caption = "合并檔案"
Command2.Caption = "抽取檔案"
File1.Path = "c:\MyFile"
File1.Pattern = "*"
End Sub
Private Sub Command1_Click()
'合并檔案
Dim H As Long, F As String, I As Long, Info As String
Dim H1 As Long, F1 As String, B() As Byte, S As Long
Dim S1 As Long, nS As String, nPath As String
'用二進制方式打開一個檔案,準備將多個檔案寫入其中
If File1.ListCount = 0 Then Exit Sub
nPath = File1.Path
If Right(nPath, 1) <> "\" Then nPath = nPath & "\"
H = FreeFile
F = "C:\MyText.txt" '合并后的大檔案名,可任意取擴展名
If Dir(F) <> "" Then Kill F
Open F For Binary As #H
For I = 0 To File1.ListCount - 1
F1 = nPath & File1.List(I) '要合并的一個檔案
S = FileLen(F1)
If S < 1 Then GoTo XiaI
ReDim B(1 To S)
H1 = FreeFile
Open F1 For Binary As #H1
Get #H1, , B '從 F1 中讀出資料
Close #H1
S1 = Seek(H)
Info = Info & S1 & "<" & S & ">" & F1 & "|" '記錄 F1 的資訊:起點位置,檔案大小,檔案名
Put #H, , B '將資料寫入 F
XiaI:
Next
'Info 的格式為:起點位置,檔案大小,檔案名|起點位置,檔案大小,檔案名|…|Info的位元組數(10)
S1 = 10 + LenB(StrConv(Info, vbFromUnicode))
nS = S1
If Len(nS) < 10 Then nS = nS & String(10 - Len(nS), "-")
B = StrConv(Info & nS, vbFromUnicode)
Put #H, , B '將合并資訊寫到檔案末尾
Close #H
End Sub
Private Sub Command2_Click()
'取出原合并前的檔案
Dim H As Long, F As String, S As Long, S1 As Long, B() As Byte
Dim nStr As String, F1 As String, H1 As String
Dim StartS As Long, LongS As Long, Str1 As String, S2 As Long
H = FreeFile
F = "C:\MyText.txt" '合并后的大檔案
S = FileLen(F)
Open F For Binary As #H
'讀出末尾 10 個位元組,獲得合并資訊的位元組數
Seek H, S - 9
ReDim B(1 To 10)
Get #H, , B
nStr = B
nStr = StrConv(nStr, vbUnicode)
S1 = Val(nStr)
'讀出末尾 S1 個位元組,獲得合并資訊的字串
Seek H, S - S1 + 1
ReDim B(1 To S1)
Get #H, , B
nStr = B
nStr = StrConv(nStr, vbUnicode)
MsgBox "合并前資訊:" & vbCrLf & nStr & vbCrLf & "抽取第一個檔案保存為:C:\My-1.txt", vbInformation, "抽取檔案"
'接下來的事情,就是分析字串 nStr
'下面的代碼是抽取原第一個檔案的資料,保存為 C:\My-1.txt
'相信通過適當修改后,抽取其他檔案或全部檔案,你自己能搞定
S1 = InStr(nStr, "<")
Str1 = Left(nStr, S1 - 1)
StartS = Val(Str1) '檔案資料的起點位置
S2 = InStr(S1 + 1, nStr, ">")
Str1 = Mid(nStr, S1 + 1, S2 - S1 - 1)
LongS = Val(Str1) '原檔案大小
'從 F 中讀出原檔案的資料
Seek H, StartS
ReDim B(1 To LongS)
Get #H, , B
'將資料保存到檔案 F1
F1 = "C:\My-1.txt" '可根據 nStr 的內容修改
If Dir(F1) <> "" Then Kill F1
H1 = FreeFile
Open F1 For Binary As #H1
Put #H1, , B
Close #H1
Close #H
End Sub
uj5u.com熱心網友回復:
還有一點。。。。合并后的檔案后綴名為,.oskuj5u.com熱心網友回復:
有人知道嗎?????uj5u.com熱心網友回復:
@of123求幫忙~
uj5u.com熱心網友回復:
壓縮和解壓縮,網上資源一大堆,自己百度一下就好了,何苦來這求幫忙uj5u.com熱心網友回復:
新手啥都不會啊。。。。。。而且這也不是壓縮。。。。。。
uj5u.com熱心網友回復:
有人沒啊。。。。。。。。。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/125032.html
標籤:VB基礎類
上一篇:大家給點建議呀?
