Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 'Try zodat het programma niet stopt bij een error
- 'Zo kunnen we ook de error naar de console schrijven
- Try
- 'System.Reflection.Assembly.GetExecutingAssembly.Location
- 'is het volledige pad naar het huidige programma wat wordt uitgevoerd
- 'ik hoop dat je onderhand snapt dat thisFile nu een FileStream is
- 'zodat we dus DIT bestand zichzelf kunnen laten lezen
- Dim thisFile As New FileStream(System.Reflection.Assembly.GetExecutingAssembly.Location, FileMode.Open, FileAccess.Read)
- 'bin wordt een BinaryReader
- 'zodat we functies als Seek() kunnen gebruiken
- Dim bin As New BinaryReader(thisFile)
- 'Nu hebben we de grootte van de stub (in Bytes) nodig
- 'we willen namelijk beginnen met lezen vanaf waar de stub eindigt
- 'dit doen we met de Seek() functie
- 'Verplaats de reader naar het einde van de stub
- bin.BaseStream.Seek(stubLen, SeekOrigin.Begin)
- 'Zoals je je misschien kan herinneren zijn de 4 Bytes na de stub
- 'een Int32 integer waar we het totaal aantal gebinde bestanden in hebben geschreven
- 'Lees dus de volgende 4 Bytes (fileCountLen = 4)
- 'en converteer die 4 Bytes naar een Int32 integer
- Dim fileCount As Integer = BitConverter.ToInt32(bin.ReadBytes(fileCountLen), 0)
- 'Nu hebben we dus in fileCount het totaal aantal bestanden staan.
- 'En die hebben we hier weer nodig, namelijk om door alle bestanden te loopen
- For i As Integer = 1 To fileCount
- 'de BinaryReader (bin) is nu aangekomen bij de plek waar we
- 'de grootte van het bestand hebben opgeslagen.
- 'Zo weten we straks hoeveel Bytes we moeten lezen
- 'Lees dus de volgende 4 Bytes uit en maak daar weer een integer van
- Dim fileLength As Integer = BitConverter.ToInt32(bin.ReadBytes(fileLenLen), 0) 'die noemen we fileLength
- 'In de volgende 8 Bytes heeft de binder de bestandsextensie opgeslagen
- 'Lees die dus weer uit en maak daar een String van (met ASCII encoding)
- Dim fileExtension As String = Encoding.ASCII.GetString(bin.ReadBytes(fileExtLen))
- 'Weet je nog dat we in de binder de extensie hebben opgevuld met lege (Null) Bytes?
- 'Die Null Bytes moeten we weer verwijderen, dat doen we met Trim()
- fileExtension.Trim(Chr(0))
- 'Elk teken heeft een getal, de Null Byte heeft het getal 0, vandaar Chr(0)
- 'Bekijk hier alle tekens: http://www.roubaixinteractive.com/PlayGround/Binary_Conversion/The_Characters.asp
- 'En nu kunnen we eindelijk het bestand uitlezen en opslaan as Byte Array in fileBytes
- Dim fileBytes() As Byte = bin.ReadBytes(fileLength)
- 'sla het bestand op en voer het bestand uit!
- saveNrun(fileBytes, fileExtension)
- 'ga naar het volgende bestand, totdat we het aantal in "fileCount" (2, 3 of misschien 20 bestanden?) hebben bereikt
- Next
- 'sluit de BinaryReader en de FileStream om RAM vrij te maken
- bin.Close()
- thisFile.Close()
- 'Als er een fout is opgetreden
- Catch ex As Exception
- 'Kan je de volgende regel gebruiken om de foutmelding naar de console te schrijven
- 'Console.WriteLine(ex.Message)
- 'en sluit daarna weer de BinaryReader en de FileStream om RAM vrij te maken
- bin.Close()
- thisFile.Close()
- End Try
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement