Example: /Compression/Old ZipMBS class/test huge files with small archive

Online Documentation   -   Statistics   -   FAQ   -   Plugin Parts (All, Dependencies)   -   Class hierarchy

New in Version 22.2 22.3 22.4 22.5 23.0 23.1 23.2 23.3 23.4 23.5 24.0 24.1

The list of the   topics,   classes,   interfaces,   controls,   modules,   global methods by category,   global methods by name,   screenshots,   licenses   and   examples.

Platforms to show: All Mac Windows Linux Cross-Platform

/Compression/Old ZipMBS class/test huge files with small 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/Old ZipMBS class/test huge files with small archive

This example is the version from Sun, 17th Mar 2012.

Project "test huge files with small archive.xojo_binary_project"
MenuBar MenuBar1
MenuItem UntitledMenu1 = ""
MenuItem FileMenu = "&File"
MenuItem FileQuit = "Quit"
MenuItem EditMenu = "&Edit"
MenuItem EditUndo = "&Undo"
MenuItem UntitledMenu0 = "-"
MenuItem EditCut = "Cu&t"
MenuItem EditCopy = "&Copy"
MenuItem EditPaste = "&Paste"
MenuItem EditClear = "Clear"
End MenuBar
Class App Inherits Application
EventHandler Sub Open() // We write 15 GB of zeros into a Zip file and read it back to verify it writes correctly. // This tests whether we can handle more then 2 GB per file in a zip archive. // it does not test whether archives bigger than 2 GB work! const length = 10000000 // Make a 10 MB big string with only zeros dim m as new MemoryBlock(length) ZeroBuffer = m m = nil System.DebugLog "Start..." Write Read System.DebugLog "Finished." quit End EventHandler
Sub Read() dim f as FolderItem dim z as UnZipMBS dim s as string dim info as UnZipFileInfoMBS f=SpecialFolder.Desktop.Child("test.zip") z=new UnZipMBS(f) if z.Handle = 0 then MsgBox "Failed to open zip file." Return end if z.GoToFirstFile if z.Lasterror <> 0 then MsgBox "GoToFirstFile: "+str(z.Lasterror) Return end if do info=z.FileInfo System.DebugLog "Reading file: "+z.FileName // filename like test1.txt" dim size as integer = val(mid(z.FileName,5,1)) z.OpenCurrentFile if z.Lasterror <> 0 then MsgBox "GoToFirstFile: "+str(z.Lasterror) Return end if for g as integer = 1 to size for n as integer = 1 to 100 s = z.ReadCurrentFile(lenb(ZeroBuffer)) if s<>ZeroBuffer then break MsgBox "Failed: Data not correct. Buffer read too small." Return end if s = z.ReadCurrentFile(1) dim code as integer = asc(s) if code<>n then break MsgBox "Failed: Data not correct. Checkcode wrong: "+str(code)+"<>"+str(n) Return end if next next System.DebugLog "Read "+Format(z.Position/1000/1000, "0")+" MB" z.CloseCurrentFile z.GoToNextFile loop until z.Lasterror<>0 MsgBox "Everything okay." End Sub
Sub Write() dim z as ZipMBS dim f as FolderItem dim d as new date dim info as ZipFileInfoMBS f=SpecialFolder.Desktop.Child("test.zip") z=new ZipMBS(f,0) // we create files from 1 to 5 GB inside the zip for i as integer = 1 to 5 info=new ZipFileInfoMBS info.SetDate d info.ExternalFileAttributes=0 info.InternalFileAttributes=0 info.DosDate=0 // auto System.DebugLog "Write test"+str(i)+".txt with "+stR(i)+" GB." z.CreateFile("test"+str(i)+".txt", info, "", "", "", z.MethodDeflated, z.CompressionBestCompression, true) // for each GB for j as integer = 1 to i // write a little bit more than 1 GB for k as integer = 1 to 100 z.Write ZeroBuffer z.Write chrb(k) next next z.CloseFile next z.Close("global comment") z = nil End Sub
Property ZeroBuffer As string
End Class
FileTypes
Filetype text
End FileTypes
End Project

See also:

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


💬 Ask a question or report a problem