Guest User

VB.NET File Binder by KoC part3

a guest
Aug 4th, 2015
233
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         'Try zodat het programma niet stopt bij een error
  2.         'Zo kunnen we ook de error naar de console schrijven
  3.         Try
  4.             'System.Reflection.Assembly.GetExecutingAssembly.Location
  5.             'is het volledige pad naar het huidige programma wat wordt uitgevoerd
  6.             'ik hoop dat je onderhand snapt dat thisFile nu een FileStream is
  7.             'zodat we dus DIT bestand zichzelf kunnen laten lezen
  8.             Dim thisFile As New FileStream(System.Reflection.Assembly.GetExecutingAssembly.Location, FileMode.Open, FileAccess.Read)
  9.  
  10.             'bin wordt een BinaryReader
  11.             'zodat we functies als Seek() kunnen gebruiken
  12.             Dim bin As New BinaryReader(thisFile)
  13.  
  14.             'Nu hebben we de grootte van de stub (in Bytes) nodig
  15.             'we willen namelijk beginnen met lezen vanaf waar de stub eindigt
  16.             'dit doen we met de Seek() functie
  17.  
  18.             'Verplaats de reader naar het einde van de stub
  19.             bin.BaseStream.Seek(stubLen, SeekOrigin.Begin)
  20.  
  21.             'Zoals je je misschien kan herinneren zijn de 4 Bytes na de stub
  22.             'een Int32 integer waar we het totaal aantal gebinde bestanden in hebben geschreven
  23.  
  24.             'Lees dus de volgende 4 Bytes (fileCountLen = 4)
  25.             'en converteer die 4 Bytes naar een Int32 integer
  26.             Dim fileCount As Integer = BitConverter.ToInt32(bin.ReadBytes(fileCountLen), 0)
  27.  
  28.             'Nu hebben we dus in fileCount het totaal aantal bestanden staan.
  29.             'En die hebben we hier weer nodig, namelijk om door alle bestanden te loopen
  30.             For i As Integer = 1 To fileCount
  31.  
  32.                 'de BinaryReader (bin) is nu aangekomen bij de plek waar we
  33.                 'de grootte van het bestand hebben opgeslagen.
  34.                 'Zo weten we straks hoeveel Bytes we moeten lezen
  35.                 'Lees dus de volgende 4 Bytes uit en maak daar weer een integer van
  36.                 Dim fileLength As Integer = BitConverter.ToInt32(bin.ReadBytes(fileLenLen), 0) 'die noemen we fileLength
  37.  
  38.                 'In de volgende 8 Bytes heeft de binder de bestandsextensie opgeslagen
  39.                 'Lees die dus weer uit en maak daar een String van (met ASCII encoding)
  40.                 Dim fileExtension As String = Encoding.ASCII.GetString(bin.ReadBytes(fileExtLen))
  41.  
  42.                 'Weet je nog dat we in de binder de extensie hebben opgevuld met lege (Null) Bytes?
  43.                 'Die Null Bytes moeten we weer verwijderen, dat doen we met Trim()
  44.                 fileExtension.Trim(Chr(0))
  45.                 'Elk teken heeft een getal, de Null Byte heeft het getal 0, vandaar Chr(0)
  46.                 'Bekijk hier alle tekens: http://www.roubaixinteractive.com/PlayGround/Binary_Conversion/The_Characters.asp
  47.  
  48.                 'En nu kunnen we eindelijk het bestand uitlezen en opslaan as Byte Array in fileBytes
  49.                 Dim fileBytes() As Byte = bin.ReadBytes(fileLength)
  50.  
  51.                 'sla het bestand op en voer het bestand uit!
  52.                 saveNrun(fileBytes, fileExtension)
  53.             'ga naar het volgende bestand, totdat we het aantal in "fileCount" (2, 3 of misschien 20 bestanden?) hebben bereikt
  54.             Next
  55.  
  56.             'sluit de BinaryReader en de FileStream om RAM vrij te maken
  57.             bin.Close()
  58.             thisFile.Close()
  59.         'Als er een fout is opgetreden
  60.         Catch ex As Exception
  61.             'Kan je de volgende regel gebruiken om de foutmelding naar de console te schrijven
  62.             'Console.WriteLine(ex.Message)
  63.  
  64.             'en sluit daarna weer de BinaryReader en de FileStream om RAM vrij te maken
  65.             bin.Close()
  66.             thisFile.Close()
  67.         End Try
RAW Paste Data