Platforms to show: All Mac Windows Linux Cross-Platform

/Compression/Archive/Extract files in Archive


Required plugins for this example: MBS Compression Plugin

You find this example project in your Plugins Download as a Xojo project file within the examples folder: /Compression/Archive/Extract files in Archive

This example is the version from Fri, 7th Jan 2021.

Project "Extract files in Archive.xojo_binary_project"
Class App Inherits ConsoleApplication
EventHandler Function Run(args() as String) As Integer dim a as new ArchiveReaderMBS a.SupportFilterAll a.SupportFormatAll // open file dim f as FolderItem = SpecialFolder.Desktop.Child("test.zip") if not a.OpenFile(f) then Break // path invalid? end if dim e as ArchiveEntryMBS = a.NextHeader while e <> nil dim pathname as string = E.PathName dim filetype as integer = e.FileType dim file as FolderItem = ParsePath(f.parent, pathname) Select case filetype case e.kFileTypeRegular // write file dim b as BinaryStream = BinaryStream.Create(file, true) do dim data as string = a.ReadDataString(1024*1024) if a.lasterror <> 0 then break // error exit end if if data.lenb = 0 then exit // finished else b.Write(data) end if loop case e.kFileTypeDirectory // create directory file.CreateAsFolder else break end Select e = a.NextHeader wend End EventHandler
Function ParsePath(baseFolder as folderitem, s as string) As FolderItem // strip / from beginning or ending if left(s,1) = "/" then s = mid(s,2) end if if right(s,1) = "/" then s = left(s,s.len-1) end if dim parts() as string = split(s, "/") dim f as FolderItem = baseFolder dim u as integer = parts.Ubound For i As Integer = 0 To u Dim FolderName As String = parts(i) #if TargetWindows then FolderName = Trim(FolderName) // no spaces on end or beginning of file name for Windows #EndIf f = f.Child(FolderName) If i < u Then // create folders as needed for path components. f.CreateAsFolder end if Next Return f End Function
End Class
End Project

The items on this page are in the following plugins: MBS Compression Plugin.


The biggest plugin in space...