List contents of zip file?
Posted: Sun Jul 30, 2017 5:50 pm
Does anyone know how to list the contents of a zip file (without un-zipping it)?
http://www.purebasic.com
https://www.purebasic.fr/english/
Code: Select all
EnableExplicit
UseZipPacker()
Define cnt,size.f,txt$,stxt$,filename$
filename$ = OpenFileRequester("Please choose zip to list","","zip",0)
If OpenPack(0,filename$)
If ExaminePack(0)
While NextPackEntry(0)
cnt+1
size=PackEntrySize(0)
If size>999999
size/1000000
stxt$="mb"
Else
size/1000
stxt$="kb"
EndIf
txt$+Str(cnt)+". " + PackEntryName(0) + " Size: " +FormatNumber(size,1)+stxt$+Chr(13)
Wend
EndIf
ClosePack(0)
MessageRequester("Contents of:"+filename$,txt$)
EndIf
Code: Select all
EnableExplicit
UseZipPacker()
Procedure.s OpenFileRequesterEx(DefaultFile.s,defaultdirectory.s,AllowedFileTypes.s, Message.s)
Protected Result.s, NSPanel, NSEnumerator, NSURL
NSPanel = CocoaMessage(0, 0, "NSOpenPanel openPanel")
CocoaMessage(0, NSPanel, "setMessage:$", @Message)
CocoaMessage(0, NSPanel, "setAllowedFileTypes:", CocoaMessage(0, CocoaMessage(0, 0, "NSString stringWithString:$", @AllowedFileTypes), "componentsSeparatedByString:$", @"|"))
CocoaMessage(0, NSPanel, "setDirectoryURL:", CocoaMessage(0, 0, "NSURL fileURLWithPath:$", @defaultdirectory))
CocoaMessage(0, NSPanel, "setNameFieldStringValue:$", @DefaultFile)
If CocoaMessage(0, NSPanel, "runModal")
NSEnumerator = CocoaMessage(0, CocoaMessage(0, NSPanel, "URLs"), "objectEnumerator")
NSURL = CocoaMessage(0, NSEnumerator, "nextObject")
If NSURL
Result = PeekS(CocoaMessage(0, CocoaMessage(0, NSURL, "path"), "UTF8String"), -1, #PB_UTF8)
NSURL = CocoaMessage(0, NSEnumerator, "nextObject") ; load only one file!
EndIf
EndIf
ProcedureReturn Result
EndProcedure
Define cnt,size.f,txt$,stxt$,filename$,filesize.q,unpackfilesize.q
filename$ = OpenFileRequesterEx("","","zip","Please choose zip file to list")
filesize = FileSize(filename$)
If OpenPack(0,filename$)
If ExaminePack(0)
While NextPackEntry(0)
cnt+1
size=PackEntrySize(0) : unpackfilesize+size
If size>999999
size/1000000
stxt$="mb"
Else
size/1000
stxt$="kb"
EndIf
txt$+Str(cnt)+". " + PackEntryName(0) + " Size: " +FormatNumber(size,1)+stxt$+Chr(13)
Wend
EndIf
ClosePack(0)
txt$+"---Zip file size: "+FormatNumber(filesize/1000000,2)+" (unzip "+FormatNumber(unpackfilesize/1000000,2)+")---"
MessageRequester("Contents of:"+GetFilePart(filename$),txt$)
EndIf