Wow .. this is an amazing library. I've managed to extract a .zip file today, and it works very nice.
I tried using one of my own archives. At first, the first example stopped after showing one file.
I changed to loop to:
Until ZipApi_GotoNextFile(zipIn) ;;ZIPAPI_UNZ_END_OF_LIST_OF_FILE
and it showed all files in the archive. Maybe that happened because my archive had only one file in the first folder, all other files are placed in subfolders.
Then I converted this example to extract the archive.
Because the .zip I used contained (sub)folders, I needed Mr. Picklesworth FixPath routine from the archive to create the folders. (For that routine, I needed to replace the "/" with "\" in the searchpath.)
Finally, this is the code I used:
Ow .. not really worth mentioning .. I needed to add WaitKey() commands to the examples to see their output.
The extract from/to banks functions seems very exciting, too. I can imagine this is very useful.
It works very well and thanks for showing this. I didn't knew this was possible at all.
I tried using one of my own archives. At first, the first example stopped after showing one file.
I changed to loop to:
Until ZipApi_GotoNextFile(zipIn) ;;ZIPAPI_UNZ_END_OF_LIST_OF_FILE
and it showed all files in the archive. Maybe that happened because my archive had only one file in the first folder, all other files are placed in subfolders.
Then I converted this example to extract the archive.
Because the .zip I used contained (sub)folders, I needed Mr. Picklesworth FixPath routine from the archive to create the folders. (For that routine, I needed to replace the "/" with "\" in the searchpath.)
Finally, this is the code I used:
Graphics 800, 600, 0, 2 ; -------------------------------------------------- ; -- ; -- examples/example1.bb ; -- ; -- A short example of how to iterate through a ; -- ZIP file's contents using the ZipApi library. ; -- ; -------------------------------------------------- ; Include required libraries Include "../Blitz_Basic_Bank.bb" Include "../Blitz_File_FileName.bb" Include "../Blitz_File_ZipApi.bb" ; Open the zip file Local zipIn = ZipApi_Open("test-file.zip") ; Check the zip file was valid If zipIn = 0 Then ; Not a valid ZIP file - display error and exit program Print "There was an error whilst trying to open the zip file." WaitKey() End EndIf ; Set file pointer to first file ZipApi_GotoFirstFile(zipIn) ; Print a fancy header Print LSet("FileName", 30) + RSet("Packed Size", 14) + RSet("Normal Size", 14) + RSet("Ratio", 10) ; Begin iterating through files Repeat ; Get the current file's information Local fileInfo.ZIPAPI_UnzFileInfo = ZipApi_GetCurrentFileInfo(zipIn) ; Generate fancy file data, containing file name, size and compression ratio Local fileData$ = "" Local compressionRatio# = Float((fileInfo\CompressedSize) / Float(fileInfo\UnCompressedSize)) * 100.0 fn$ = Replace$(fileinfo\Filename, "/", "") FixPath(fn$) If FileType(fn$) <> 2 Then outname$ = ZipApi_ExtractFile(zipIn, fileinfo\Filename, fileinfo\Filename$) End If fileData$ = LSet(fileInfo\FileName, 30) fileData = fileData + RSet(fileInfo\CompressedSize, 14) fileData = fileData + RSet(fileInfo\UnCompressedSize, 14) fileData = fileData + RSet(compressionRatio + "%", 10) ; Cleanup & output ZIPAPI_UnzFileInfo_Dispose(fileInfo) Print fileData Until ZipApi_GotoNextFile(zipIn) ;;ZIPAPI_UNZ_END_OF_LIST_OF_FILE ; Close & Cleanup ZipApi_Close(zipIn) Print "Press any key.." WaitKey() End ;----------------------------------------------------------------------------------------------------- ;----------------------------------------------------------------------------------------------------- ; ID: 1567 ; Author: Mr. Picklesworth ; Date: 2005-12-17 15:36:23 ; Title: FixPath ; Description: Creates every missing folder in a file path Function FixPath(path$) ;Creates every missing folder in a path. (Fills in gaps in a filepath) ;Handy for file saving. ;Written by Dylan McCall (Mr. Picklesworth) path$=extractfilepath(path$) Local c=1,pathTo$ Repeat slash=Instr(path$,"",c) If slash=0 If c>=Len(path$)+1 Exit Else slash=Len(path$)+1 EndIf EndIf folder$=Mid(path$,c,slash-c) If FileType(pathTo$+folder)=0 Then CreateDir(pathTo$+folder) c=slash+1 pathTo$=pathTo$+folder+"" Forever Return 1 End Function ;FUNCTION ExtractFilePath ;Accepts a filepath with filename and returns only the path ;i.e. pass c:\temp\test.txt the return value will be c:\temp\ Function ExtractFilePath$(sFilePath$) ;Written by Perturbatio ;LOCAL VARS Local iStartPos% = 0 Local iSearchPos% = 0 Local iFilePathLength = 0 Local sFileExt$ = "" ;BEGIN FUNCTION CODE iFilePathLength = Len(sFilePath$) iSearchPos% = iFilePathLength While (iStartPos% < 1) And (iSearchPos% > 1) iStartPos% = Instr(sFilePath$, "", iSearchPos%) iSearchPos% = iSearchPos% - 1 Wend If iStartPos = 0 Then ;if the filepath contains no backslashes sFileExt$ = sFilePath$ Else sFileExt$ = Left$(sFilePath$, iStartPos%) EndIf Return sFileExt$ End Function
Ow .. not really worth mentioning .. I needed to add WaitKey() commands to the examples to see their output.
The extract from/to banks functions seems very exciting, too. I can imagine this is very useful.
It works very well and thanks for showing this. I didn't knew this was possible at all.