List contents of zip file?
List contents of zip file?
Does anyone know how to list the contents of a zip file (without un-zipping it)?
MacBook Pro-M1 (2021), Sonoma 14.4.1, PB 6.10LTS M1
Re: List contents of zip file?
OpenPack() and than ExaminePack() (this is no unzipping!)
PureBasic 5.73 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Old bugs good, new bugs bad! Updates are evil: might fix old bugs and introduce no new ones.
Old bugs good, new bugs bad! Updates are evil: might fix old bugs and introduce no new ones.
Re: List contents of zip file?
Oh, a whole new area of PB for me! Kinda like below.
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
MacBook Pro-M1 (2021), Sonoma 14.4.1, PB 6.10LTS M1
Re: List contents of zip file?
This what I settled for:
The OpenFileRequesterEx is Mac only so if you have something else then use the PB version of OpenFileRequester otherwise it should run everywhere.
The OpenFileRequesterEx is Mac only so if you have something else then use the PB version of OpenFileRequester otherwise it should run everywhere.
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
MacBook Pro-M1 (2021), Sonoma 14.4.1, PB 6.10LTS M1