Try ' Get it into a stream loFile = New FileStream(lcFile, FileMode.Open, FileAccess.Read, FileShare.Read) ' If we can work with the file If loFile.CanSeek Then ' Initialization lnLength = loFile.Length ' Number of bytes to read lnByteToRead = 2048 ' Maximum number of bytes to read If lnLength < 2048 Then lnByteToRead = lnLength End If ' Get the byte-order mark, if there is one loByte = New Byte(lnByteToRead) {} loFile.Read(loByte, 0, lnByteToRead - 1) Else cMessage = cUnableToReadTheFile Clear() Return False End If ' Close the file loFile.Close() Catch loError As Exception End Try ' Initialization lcString = Encoding.Default.GetString(loByte)So, that part is faster. However, I found out the biggest latency, on a specific ZIP file contains 31,000 files is when I do the unzip by using the WinZip Command Prompt utility. I will have to look at that.