用VB實現(xiàn)對庫文件的分割備份 在設計管理程序時,數(shù)據(jù)庫的軟盤備份與恢復是我們經(jīng)常遇到的一個問題。如果僅僅使用文件復制指令,那么在文件大小超過軟盤容量時,就會出現(xiàn)錯誤。下面我來介紹一種用VB實現(xiàn)的對文件進行分割備份的方法。假設在E:“CLASS目錄下有一個名為CLASSES.MDB的文件,3.8M,我們現(xiàn)在要按照每個1.4M,把它分割成3個文件進行備份,然后,再恢復成CLASSES1.MDB文件。啟動VB,新建一個工程,添加一個模塊,將下列代碼填入模塊的聲明中: TypeFileSection BytesAsByte FileLenAsLong EndType TypeSectionedFile FilesAsFileSection NumberOfFilesAsLong EndType TypeFileInfo OrigProjSizeAsLong OrigFileNameAsString FileCountAsInteger FileStartNumAsLong EndType 然后,在Form1中添加兩個按鈕,分別命名為cmdBackup,Caption:"備份";cmdRestore,Caption:"恢復"。 分別雙擊按鈕,填入以下代碼: PrivateSubcmdBackup_Click DimSplitFileNameAsString‘待備份的文件名 DimSplitAsLong‘備份文件的大小 DimSaveNameAsString‘備份文件名 DimfNumAsInteger‘可用的文件號 DimNumFilAsLong‘備份文件的數(shù)目 DimFilesLenAsLong‘待備份文件的大小 DimCurrentFileAsSectionedFile‘參數(shù)結(jié)構(gòu)
SplitFileName="e:“class“classes.mdb" Split=1400000 FilesLen=FileLen fNum=FreeFile OpenSplitFileNameForBinaryAsfNum‘計算備份參數(shù) NumFil=CInt ReDimCurrentFile.Files Fori=1ToNumFil ReDimCurrentFile.Files.Bytes CurrentFile.Files.FileLen=UBound.Bytes) Next Fori=1ToNumFil Get#fNum,,CurrentFile.Files.Bytes Next DimFileInfoFileAsFileInfo‘相關數(shù)據(jù)寫入臨時文件 FileInfoFile.FileCount=NumFil FileInfoFile.OrigFileName=SplitFileName FileInfoFile.OrigProjSize=FileLen FileInfoFile.FileStartNum=BeginningNumber SaveName=SplitFileName".tpl" fNum=FreeFile OpenSaveNameForBinaryAs#fNum Put#fNum,,F(xiàn)ileInfoFile Close#fNum EndSub
PrivateSubcmdRestore_Click DimOutNameAsString‘恢復后文件名 DimfNumAsInteger‘可用的文件號 DimtmpFileNameAsString‘臨時文件名 DimFileAsSectionedFile‘參數(shù)結(jié)構(gòu) DimFileInfoAsFileInfo‘臨時文件的結(jié)構(gòu) tmpFileName="e:“class“classes.mdb.tpl" OutName="e:“class“classes1.mdb" fNum=FreeFile OpentmpFileNameForBinaryAs#fNum‘取得相關數(shù)據(jù) Get#fNum,,F(xiàn)ileInfo Close#fNum ReDimFile.Files‘打開備份文件 Fori=1ToFileInfo.FileCount OpenName=FileInfo.OrigFileName"."Format,"00#") fNum=FreeFile OpenOpenNameForBinaryAs#fNum Get#fNum,1,F(xiàn)ile.Files Close#fNum Next fNum=FreeFile OpenOutNameForBinaryAs#fNum‘恢復 Fori=1ToFileInfo.FileCount Put#fNum,,F(xiàn)ile.Files.Bytes Next Close#fNum EndSub 運行該例程,“備份”按鈕,用資源管理器看看E:“CLASS目錄,可以看到分割后的三個文件:CLASSES.MDB.000、CLASSES.MDB.001、CLASSES.MDB.002,大小分別為:1.33M、1.33M、1.1M,還有一個存放參數(shù)的文件:CLASSES.MDB.TPL,大。1K。“恢復”按鈕,這些文件又被恢復成了CLASSES1.MDB。 以上程序在PWIN98、VB6環(huán)境下運行通過。需要的朋友可以加入拷貝到A盤等語句,這樣,一個實用的備份與恢復程序就完成了。 (責任編輯:lengke) |