Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ACCÉS BINAIRE : SPLITTEUR DE FICHIERS EN VB.NET


Information sur la source

Catégorie :Compression & Split Source .NET ( DotNet ) Niveau : Débutant Date de création : 05/02/2003 Date de mise à jour : 26/01/2004 00:49:55 Vu / téléchargé: 7 328 / 293

Note :
8,5 / 10 - par 2 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (17)
Ajouter un commentaire et/ou une note


Description

Voila, d'habitude j'essaye de ne pas mettre de projets mais juste des procédures ou fonctions, mais apres une petit prise de tete de 20mn sur comment j'allais le présenter, j'ai abandonner pour finalement mettre la beta 1 du projet (le design laissera comprendre à lui seul pkoi "beta 1" lol).

Il y a un .reg qui montre les lignes à écrire pour ajouter le prog au menu contextuel (ceci en prenant en compte que le .exe est copié dans le dossier Winnt/Windows de votre system) ,ce pour ne pas mettre le setup.

J'ai essayer de commenter le code, qui est assez simple mais parfois peut etre un peu fouilli... je repondrais à vos questions avec joie si vous ne comprenez pas qqc .


Si il reste un bug,  je m'en excuse, les tests de ses propres applis sont toujours insufisants selon mon patron... :) Prevenez moi si vous en detectez un svp (vous pouvez gueuler si vous voulez)

UPDATE : et ben dis donc....pendant + de 6 mois j'ai laisser une version betement bugger qui "desplittait" mal... un "-1" mal placé qui m'oblige à m'excuser...
 

Source

  • Imports System.IO
  • Imports System
  • Imports Microsoft.Win32
  • Public Class Form1
  • Inherits System.Windows.Forms.Form
  • Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  • Dim args As String
  • If hb_inside(Environment.CommandLine, "Bpath ", " Epath") <> "" Then
  • args = hb_inside(Environment.CommandLine, "Bpath ", " Epath") 'on check si les arguments contiennent qqc entre Bpath et Epath (ne s'executera que si un fichier est appelé par le menu contextuel, et si vous avez lancer le .reg), si c'est le cas
  • Else
  • If Environment.GetCommandLineArgs.GetUpperBound(0) >= 1 Then 'si ce n'est pas le cas, on regarde si il y a + de 1 ligne d'arguments
  • If IO.File.Exists(Environment.GetCommandLineArgs(1)) Then 'si oui on regarde si la deuxieme ligne est un fichier (ne se passera que si vous glissez un fichier sur le .exe
  • args = Environment.GetCommandLineArgs(1)
  • End If
  • End If
  • End If
  • If args <> "" Then 'si on a un fichier sur lequel travailler dans les arguments :
  • If IO.File.Exists(args) Then 'on check si le fichier existe
  • If LCase(Mid(args, Len(args) - 3, 4)) = ".hbs" Then 'on check si c'est un fichier .hbs (splitté)
  • 'si oui alors :
  • Dim chemin1 As String = args
  • Dim nbrfile As Integer = get_nbrfile(chemin1) 'on appele la fonction get_nbrfile qui renvoie le nbre de fichiers splitté du groupe HBS
  • Dim temp As String
  • temp = Mid(chemin1, 1, Len(chemin1) - 4) 'ceci renvoie le nom de fichier d'origine sans le .hbs
  • Dim chemin2(nbrfile) As String 'on creer un tableau à une dimension dont le nbre de cellules est = au nbre de fichiers hbs + 1 (les cellules debutent à 0)
  • Dim i As Integer
  • For i = 1 To nbrfile
  • chemin2(i) = Replace(chemin1, get_nbrcurrentfile(chemin1) & Mid(chemin1, InStrRev(chemin1, "_")), i.ToString & Mid(chemin1, InStrRev(chemin1, "_"))) 'on place les chemins de touts les fichiers splitté grace a cette boucle dans laquel on va remplacer le numero du fichier par tts les numeros du groupe (pas clair...ouais bah...)
  • Next
  • Dim cheminfin As String = Mid(temp, 1, InStrRev(temp, ".") - 1)
  • 'on propose le choix du nom de fichiers à l'utilisateur
  • sf1.Title = "Enregistrer le fichier sous"
  • sf1.Filter = "*" & Mid(cheminfin, InStrRev(cheminfin, "."), Len(cheminfin) - InStrRev(cheminfin, ".") + 1) & "|*" & Mid(cheminfin, InStrRev(cheminfin, "."), Len(cheminfin) - InStrRev(cheminfin, ".") + 1)
  • sf1.FileName = Mid(cheminfin, InStrRev(cheminfin, "\") + 1, Len(cheminfin) - InStrRev(cheminfin, "\"))
  • sf1.ShowDialog()
  • If sf1.FileName = "" Then Exit Sub
  • pathsource2.Text = args
  • 'On affiche le nbre de fichiers et la taille du fichier a despliter:
  • lblnbrfile.Text = "Nombre de fichiers .hbs :" & get_nbrfile(pathsource2.Text)
  • lbllngfiles.Text = "Taille des fichiers .hbs :" & (FileLen(pathsource2.Text) / 1024).ToString & " Ko (" & FileLen(pathsource2.Text) & " octets )"
  • lbllnglfile.Text = "Taille du dernier fichier .hbs :" & (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")) / 1024).ToString & " Ko (" & FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text) & "_")).ToString & " octets)"
  • Dim tailledesplit As Long = (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_"))))
  • Dim lentaille As Integer = tailledesplit.ToString.Length
  • Select Case lentaille
  • Case Is <= 3
  • lblunsplitlng.Text = "Taille du fichier à déspliter :" & tailledesplit.ToString & " Octets"
  • Case Is > 3
  • lblunsplitlng.Text = "Taille du fichier à déspliter :" & tailledesplit / 1024.ToString & " Ko (" & (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")))).ToString & " Octets)"
  • Case Is > 6
  • lblunsplitlng.Text = "Taille du fichier à déspliter :" & (tailledesplit / 1024) / 1024.ToString & " Mo (" & (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")))).ToString & " Octets)"
  • Case Is > 9
  • lblunsplitlng.Text = "Taille du fichier à déspliter :" & ((tailledesplit / 1024) / 1024) / 1024.ToString & " Go (" & (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")))).ToString & " Octets)"
  • End Select
  • unsplit(nbrfile, chemin2, sf1.FileName) 'on lance la procedure unsplit qui specifie le nbre de fichiers, le tableau contenant les chemins des fichiers du groupe HBS et le chemin de fichier de sortie
  • TabControl1.SelectedTab = Tab2
  • Else
  • 'si ce n'est pas un fichier .hbs :
  • pathsource.Text = args
  • 'On calcul la taille du fichier sources et des "futurs" fichiers .hbs selon la valeur de nbrsplit
  • Dim lnginit As Long = FileLen(pathsource.Text)
  • Dim lngsplit As Long = lnginit / nbrsplit.Value
  • Dim lnglastsplit As Long
  • If lngsplit < CDec(lnginit / nbrsplit.Value) Then lngsplit += 1
  • lnglastsplit = lnginit - (lngsplit * (nbrsplit.Value - 1))
  • Dim taillesource As Long = FileLen(pathsource.Text)
  • Dim lentaille As Integer = taillesource.ToString.Length
  • 'Calcul la taille du fichier source et l'affiche
  • Select Case lentaille
  • Case Is <= 3
  • lbllngsource.Text = "Taille du fichier à spliter :" & taillesource.ToString & " Octets"
  • Case Is > 3
  • lbllngsource.Text = "Taille du fichier à spliter :" & taillesource / 1024.ToString & " Ko (" & taillesource.ToString & " Octets)"
  • Case Is > 6
  • lbllngsource.Text = "Taille du fichier à spliter :" & (taillesource / 1024) / 1024.ToString & " Mo (" & taillesource.ToString & " Octets)"
  • Case Is > 9
  • lbllngsource.Text = "Taille du fichier à spliter :" & ((taillesource / 1024) / 1024) / 1024.ToString & " Go (" & taillesource.ToString & " Octets)"
  • End Select
  • 'affiche la taille des "futurs" fichiers splittés
  • lngfiles.Text = "Tailles des fichiers splittés: " & lngsplit.ToString
  • lnglfile.Text = "Taille du dernier fichier splitté : " & lnglastsplit.ToString
  • End If
  • End If
  • End If
  • End Sub
  • Private Sub split(ByVal nbrfile As Integer, ByVal chemin1 As String)
  • Dim lnginit As Long
  • Dim lngsplit As Long
  • Dim lnglastsplit As Long
  • Dim worktime As Long = Environment.TickCount 'on garde la valeur du tickcount (qui renvoie le nbre de millisecondes ecoulées depuis le demarrage de windows) pour calculer le temps d'execution de la procédure
  • Dim hb As New IO.BinaryReader(IO.File.OpenRead(chemin1)) 'on defini donc hb comme "binaryreader" , et on y ouvre le chemin contenu dans la string chemin1
  • Dim file_a(FileLen(chemin1)) As Byte 'on crée un tableau de byte donc le nbre de cellules est egale à la taille du fichiers en octets
  • Dim i As Integer
  • hb.BaseStream.Read(file_a, 0, FileLen(chemin1)) 'on lit le fichier dans les tableau teststr
  • 'on calcul la tailles des fichiers .hbs selon le nbre de splits demandés
  • lnginit = FileLen(chemin1)
  • lngsplit = lnginit / nbrfile
  • If lngsplit > CDec(lnginit / nbrfile) Then lngsplit += 1
  • lnglastsplit = lnginit - (lngsplit * (nbrfile - 1))
  • 'ecriture des fichiers .hbs, sauf le dernier qui n'aura surement pas la meme taille :
  • For i = 0 To nbrfile - 2
  • Dim hbwrite As New IO.BinaryWriter(IO.File.OpenWrite(chemin1 & "." & (i + 1).ToString & "_" & nbrfile.ToString & ".hbs"))
  • hbwrite.BaseStream.Write(file_a, (i * lngsplit), lngsplit)
  • hbwrite.Close()
  • hbwrite = Nothing
  • Application.DoEvents()
  • Next i
  • 'ecriture maintenant du dernier fichiers hbs, qui doit faire qq octets de moins que les autres, selon la taille du fichier source
  • Dim hbwrite2 As New IO.BinaryWriter(IO.File.OpenWrite(chemin1 & "." & (i + 1).ToString & "_" & nbrfile.ToString & ".hbs"))
  • hbwrite2.BaseStream.Write(file_a, ((nbrfile - 1) * lngsplit), lnglastsplit)
  • hbwrite2.Close()
  • Dim splittm As String = ((CLng(Environment.TickCount) - worktime) / 1000).ToString & " secondes"
  • MsgBox("Le fichier " & chemin1 & " a été splitté avec succés en " & splittm)
  • End Sub
  • Private Sub unsplit(ByVal nbrfile As Integer, ByVal chemin2() As String, ByVal chemin1 As String)
  • Dim i As Integer
  • Dim lngsplit As Long
  • Dim file_A() As Byte 'on crée un tableau de byte donc le nbre de cellules est egale à la taille du fichiers en octets
  • Dim n As Long
  • Dim worktime As Long = Environment.TickCount 'on garde la valeur du tickcount (qui renvoie le nbre de millisecondes ecoulées depuis le demarrage de windows) pour calculer le temps d'execution de la procédure
  • For i = 0 To nbrfile - 1 'on lance la boucle le meme nbre de fois qu'il y a de fichiers
  • Dim hb As New IO.BinaryReader(IO.File.OpenRead(chemin2(i + 1)))
  • ReDim file_A(FileLen(chemin2(i + 1)) - 1) 'on redimensionne le tableau de la taille du fichier actuel
  • hb.BaseStream.Read(file_A, 0, FileLen(chemin2(i + 1))) 'DEBUG UPDATE !! 'on stocke dans ce tableau TOUTS les bytes du fichier
  • Dim fs As FileStream = New FileStream(chemin1, FileMode.OpenOrCreate) 'on defini le filestream
  • Dim wr As BinaryWriter = New BinaryWriter(fs) 'on defini wr comme objet d'ecriture binaire
  • wr.BaseStream.Seek(0, SeekOrigin.End) 'on defini le pointeur à la fin du fichier cible
  • wr.Write(file_A) 'on ecrit le contenu du tableau
  • fs.Close() 'on ferme tout
  • wr.Close() 'on ferme tout
  • hb.Close() 'on ferme tout
  • Next i
  • MsgBox("Effectué en " & ((CLng(Environment.TickCount) - worktime) / 1000).ToString & " secondes")
  • End Sub
  • Function get_nbrfile(ByVal firstpath As String) As Integer
  • 'fonction qui renvoie le nombre de fichiers d'un groupe à partir du chemin d'un fichier hbs
  • Dim temp As String
  • temp = Mid(firstpath, 1, Len(firstpath) - 4)
  • Dim pos As Integer
  • pos = InStrRev(temp, "_") + 1
  • Return CInt(Mid(temp, pos))
  • End Function
  • Function get_nbrcurrentfile(ByVal firstpath As String) As Integer
  • 'fonction qui renvoie le numero d'un fichier hbs a partir de son chemin
  • Dim temp As String
  • temp = Mid(firstpath, 1, Len(firstpath) - 4)
  • Dim pos(1) As Integer
  • pos(0) = InStrRev(temp, ".")
  • pos(1) = InStrRev(temp, "_")
  • Return CInt(Mid(firstpath, (pos(0) + 1), (pos(1) - pos(0) - 1)))
  • End Function
  • Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
  • 'boutton split, lance la demande de nom de fichier si cela n'a pas été fait
  • Dim chemin1 As String
  • If pathsource.Text = "" Then
  • of1.Title = "Choisissez le fichier à splitter"
  • of1.Filter = "*.*|*.*"
  • of1.InitialDirectory = Environment.CurrentDirectory
  • of1.ShowDialog()
  • If of1.FileName = "" Then
  • of1.Dispose()
  • Exit Sub
  • End If
  • chemin1 = of1.FileName
  • Else
  • chemin1 = pathsource.Text
  • End If
  • of1.Dispose()
  • Dim nbrfile As Integer = nbrsplit.Value
  • Dim chemin2(nbrfile) As String
  • split(nbrfile, chemin1)
  • End Sub
  • Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
  • 'selectionne et affiche les calculs de tailles d'un fichier à splitter deja vu au dessus
  • of1.Title = "Choisissez le fichier à splitter"
  • of1.Filter = "*.*|*.*"
  • of1.InitialDirectory = Environment.CurrentDirectory
  • of1.ShowDialog()
  • If of1.FileName <> "" Then
  • pathsource.Text = of1.FileName
  • Dim lnginit As Long
  • Dim lngsplit As Long
  • Dim lnglastsplit As Long
  • lnginit = FileLen(pathsource.Text)
  • lngsplit = lnginit / nbrsplit.Value
  • If lngsplit < CDec(lnginit / nbrsplit.Value) Then lngsplit += 1
  • lnglastsplit = lnginit - (lngsplit * (nbrsplit.Value - 1))
  • 'lnglastsplit = lngsplit + (lnginit Mod nbrsplit.Value)
  • Dim taillesource As Long = FileLen(pathsource.Text)
  • Dim lentaille As Integer = taillesource.ToString.Length
  • Select Case lentaille
  • Case Is <= 3
  • lbllngsource.Text = "Taille du fichier à spliter :" & taillesource.ToString & " Octets"
  • Case Is > 3
  • lbllngsource.Text = "Taille du fichier à spliter :" & taillesource / 1024.ToString & " Ko (" & taillesource.ToString & " Octets)"
  • Case Is > 6
  • lbllngsource.Text = "Taille du fichier à spliter :" & (taillesource / 1024) / 1024.ToString & " Mo (" & taillesource.ToString & " Octets)"
  • Case Is > 9
  • lbllngsource.Text = "Taille du fichier à spliter :" & ((taillesource / 1024) / 1024) / 1024.ToString & " Go (" & taillesource.ToString & " Octets)"
  • End Select
  • lngfiles.Text = "Tailles des fichiers splittés: " & lngsplit.ToString
  • lnglfile.Text = "Taille du dernier fichier splitté : " & lnglastsplit.ToString
  • End If
  • End Sub
  • Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
  • 'Selectionne un fichier .hbs, affiche la tailles de ces fichiers et en determine la taille du fichier a resplitter
  • 'le code a deja été utilise plus haut dans le form load, il aurait été plus pratique de faire un sub, je sais
  • of1.Title = "Choisissez un des fichiers d'un groupe hbs"
  • of1.Filter = "hbs files *.hbs|*.hbs"
  • of1.InitialDirectory = Environment.CurrentDirectory
  • of1.ShowDialog()
  • If of1.FileName = "" Then Exit Sub
  • pathsource2.Text = of1.FileName
  • lblnbrfile.Text = "Nombre de fichiers .hbs :" & get_nbrfile(pathsource2.Text)
  • lbllngfiles.Text = "Taille des fichiers .hbs :" & (FileLen(pathsource2.Text) / 1024).ToString & " Ko (" & FileLen(pathsource2.Text) & " octets )"
  • lbllnglfile.Text = "Taille du dernier fichier .hbs :" & (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")) / 1024).ToString & " Ko (" & FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text) & "_")).ToString & " octets)"
  • Dim tailledesplit As Long = (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_"))))
  • Dim lentaille As Integer = tailledesplit.ToString.Length
  • 'petit calcul de fichier, selon sa taille on l'affichera en octet, kilo octets, megaoctets ou giga octets :
  • Select Case lentaille
  • Case Is <= 3
  • lblunsplitlng.Text = "Taille du fichier à déspliter :" & tailledesplit.ToString & " Octets"
  • Case Is > 3
  • lblunsplitlng.Text = "Taille du fichier à déspliter :" & tailledesplit / 1024.ToString & " Ko (" & (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")))).ToString & " Octets)"
  • Case Is > 6
  • lblunsplitlng.Text = "Taille du fichier à déspliter :" & (tailledesplit / 1024) / 1024.ToString & " Mo (" & (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")))).ToString & " Octets)"
  • Case Is > 9
  • lblunsplitlng.Text = "Taille du fichier à déspliter :" & ((tailledesplit / 1024) / 1024) / 1024.ToString & " Go (" & (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")))).ToString & " Octets)"
  • End Select
  • End Sub
  • Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
  • 'si il n'y a pas encore de fichier .hbs selectionné, relance la selection
  • If pathsource2.Text = "" Then
  • of1.Title = "Choisissez un des fichiers d'un groupe hbs"
  • of1.Filter = "hbs files *.hbs|*.hbs"
  • of1.InitialDirectory = Environment.CurrentDirectory
  • of1.ShowDialog()
  • If of1.FileName = "" Then
  • of1.Dispose()
  • Exit Sub
  • End If
  • pathsource2.Text = of1.FileName
  • End If
  • Dim chemin1 As String = pathsource2.Text
  • of1.Dispose()
  • Dim nbrfile As Integer = get_nbrfile(chemin1)
  • Dim temp As String
  • temp = Mid(chemin1, 1, Len(chemin1) - 4)
  • 'depuis le chemin des fichiers .hbs et les mets dans la tableau chemin2()
  • Dim chemin2(nbrfile) As String
  • Dim i As Integer
  • For i = 1 To nbrfile
  • chemin2(i) = Replace(chemin1, get_nbrcurrentfile(chemin1) & Mid(chemin1, InStrRev(chemin1, "_")), i.ToString & Mid(chemin1, InStrRev(chemin1, "_")))
  • Next
  • Dim cheminfin As String = Mid(temp, 1, InStrRev(temp, ".") - 1)
  • sf1.Title = "Enregistrer le fichier sous"
  • sf1.Filter = "*" & Mid(cheminfin, InStrRev(cheminfin, "."), Len(cheminfin) - InStrRev(cheminfin, ".") + 1) & "|*" & Mid(cheminfin, InStrRev(cheminfin, "."), Len(cheminfin) - InStrRev(cheminfin, ".") + 1) 'on recupere l'extension du fichier source pour ne proposer l'enregistrement que sous cette extension
  • sf1.FileName = Mid(cheminfin, InStrRev(cheminfin, "\") + 1, Len(cheminfin) - InStrRev(cheminfin, "\")) 'on recupere le nom de fichier d'origine pour le proposer par defaut à l'enregistrement
  • sf1.ShowDialog()
  • If sf1.FileName = "" Then Exit Sub
  • 'lance la function unsplit
  • unsplit(nbrfile, chemin2, sf1.FileName)
  • End Sub
  • Private Sub nbrsplit_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nbrsplit.ValueChanged
  • 'A chaque fois que la valeur est changé, on recalcule la taille des fichiers
  • If pathsource.Text = "" Then Exit Sub
  • Dim lnginit As Long
  • Dim lngsplit As Long
  • Dim lnglastsplit As Long
  • 'On recalcul la taille de l'eventuel split :
  • lnginit = FileLen(pathsource.Text)
  • lngsplit = lnginit / nbrsplit.Value
  • If lngsplit < CDec(lnginit / nbrsplit.Value) Then lngsplit += 1
  • lnglastsplit = lnginit - (lngsplit * (nbrsplit.Value - 1))
  • Dim taillesource As Long = FileLen(pathsource.Text)
  • Dim lentaille As Integer = taillesource.ToString.Length
  • 'petit calcul de fichier, selon sa taille on l'affichera en octet, kilo octets, megaoctets ou giga octets :
  • Select Case lentaille
  • Case Is <= 3
  • lbllngsource.Text = "Taille du fichier à spliter :" & taillesource.ToString & " Octets"
  • Case Is > 3
  • lbllngsource.Text = "Taille du fichier à spliter :" & taillesource / 1024.ToString & " Ko (" & taillesource.ToString & " Octets)"
  • Case Is > 6
  • lbllngsource.Text = "Taille du fichier à spliter :" & (taillesource / 1024) / 1024.ToString & " Mo (" & taillesource.ToString & " Octets)"
  • Case Is > 9
  • lbllngsource.Text = "Taille du fichier à spliter :" & ((taillesource / 1024) / 1024) / 1024.ToString & " Go (" & taillesource.ToString & " Octets)"
  • End Select
  • lngfiles.Text = "Tailles des fichiers splittés: " & lngsplit.ToString
  • lnglfile.Text = "Taille du dernier fichier splitté : " & lnglastsplit.ToString
  • End Sub
  • Public Function hb_inside(ByVal source As String, ByVal stravant As String, ByVal strapres As String)
  • 'fonction qui renvoie ce qu'il y a entre deux sous-string, dans une string
  • If InStr(1, source, stravant) > 0 Then
  • If InStr((InStr(1, source, stravant)), source, strapres) > 0 Then
  • If Mid(source, (InStr(1, source, stravant) + Len(stravant)), InStr((InStr(1, source, stravant) + Len(stravant)), source, strapres) - (InStr(1, source, stravant) + Len(stravant))) <> "" Then
  • Return Mid(source, (InStr(1, source, stravant) + Len(stravant)), InStr((InStr(1, source, stravant) + Len(stravant)), source, strapres) - (InStr(1, source, stravant) + Len(stravant)))
  • End If
  • End If
  • End If
  • End Function
  • End Class
Imports System.IO
Imports System
Imports Microsoft.Win32


Public Class Form1
    Inherits System.Windows.Forms.Form


 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim args As String
        If hb_inside(Environment.CommandLine, "Bpath ", " Epath") <> "" Then
            args = hb_inside(Environment.CommandLine, "Bpath ", " Epath") 'on check si les arguments contiennent qqc entre Bpath et Epath (ne s'executera que si un fichier est appelé par le menu contextuel, et si vous avez lancer le .reg), si c'est le cas
        Else
            If Environment.GetCommandLineArgs.GetUpperBound(0) >= 1 Then 'si ce n'est pas le cas, on regarde si il y a + de 1 ligne d'arguments
                If IO.File.Exists(Environment.GetCommandLineArgs(1)) Then 'si oui on regarde si la deuxieme ligne est un fichier (ne se passera que si vous glissez un fichier sur le .exe
                    args = Environment.GetCommandLineArgs(1)
                End If
            End If
        End If

        If args <> "" Then 'si on a un fichier sur lequel travailler dans les arguments :
            If IO.File.Exists(args) Then 'on check si le fichier existe

                If LCase(Mid(args, Len(args) - 3, 4)) = ".hbs" Then 'on check si c'est un fichier .hbs (splitté)
                    'si oui alors :
                    Dim chemin1 As String = args
                    Dim nbrfile As Integer = get_nbrfile(chemin1) 'on appele la fonction get_nbrfile qui renvoie le nbre de fichiers splitté du groupe HBS
                    Dim temp As String
                    temp = Mid(chemin1, 1, Len(chemin1) - 4) 'ceci renvoie le nom de fichier d'origine sans le .hbs
                    Dim chemin2(nbrfile) As String 'on creer un tableau à une dimension dont le nbre de cellules est = au nbre de fichiers hbs + 1 (les cellules debutent à 0)
                    Dim i As Integer
                    For i = 1 To nbrfile
                        chemin2(i) = Replace(chemin1, get_nbrcurrentfile(chemin1) & Mid(chemin1, InStrRev(chemin1, "_")), i.ToString & Mid(chemin1, InStrRev(chemin1, "_"))) 'on place les chemins de touts les fichiers splitté grace a cette boucle dans laquel on va remplacer le numero du fichier par tts les numeros du groupe (pas clair...ouais bah...)
                    Next
                    Dim cheminfin As String = Mid(temp, 1, InStrRev(temp, ".") - 1)
                    'on propose le choix du nom de fichiers à l'utilisateur
                    sf1.Title = "Enregistrer le fichier sous"
                    sf1.Filter = "*" & Mid(cheminfin, InStrRev(cheminfin, "."), Len(cheminfin) - InStrRev(cheminfin, ".") + 1) & "|*" & Mid(cheminfin, InStrRev(cheminfin, "."), Len(cheminfin) - InStrRev(cheminfin, ".") + 1)
                    sf1.FileName = Mid(cheminfin, InStrRev(cheminfin, "\") + 1, Len(cheminfin) - InStrRev(cheminfin, "\"))
                    sf1.ShowDialog()
                    If sf1.FileName = "" Then Exit Sub
                    pathsource2.Text = args


                    'On affiche le nbre de fichiers et la taille du fichier a despliter:
                    lblnbrfile.Text = "Nombre de fichiers .hbs :" & get_nbrfile(pathsource2.Text)
                    lbllngfiles.Text = "Taille des fichiers .hbs :" & (FileLen(pathsource2.Text) / 1024).ToString & " Ko (" & FileLen(pathsource2.Text) & " octets )"
                    lbllnglfile.Text = "Taille du dernier fichier .hbs :" & (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")) / 1024).ToString & " Ko (" & FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text) & "_")).ToString & " octets)"
                    Dim tailledesplit As Long = (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_"))))
                    Dim lentaille As Integer = tailledesplit.ToString.Length
                    Select Case lentaille
                        Case Is <= 3
                            lblunsplitlng.Text = "Taille du fichier à déspliter :" & tailledesplit.ToString & " Octets"
                        Case Is > 3
                            lblunsplitlng.Text = "Taille du fichier à déspliter :" & tailledesplit / 1024.ToString & " Ko (" & (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")))).ToString & " Octets)"
                        Case Is > 6
                            lblunsplitlng.Text = "Taille du fichier à déspliter :" & (tailledesplit / 1024) / 1024.ToString & " Mo (" & (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")))).ToString & " Octets)"
                        Case Is > 9
                            lblunsplitlng.Text = "Taille du fichier à déspliter :" & ((tailledesplit / 1024) / 1024) / 1024.ToString & " Go (" & (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")))).ToString & " Octets)"
                    End Select

                    unsplit(nbrfile, chemin2, sf1.FileName) 'on lance la procedure unsplit qui specifie le nbre de fichiers, le tableau contenant les chemins des fichiers du groupe HBS et le chemin de fichier de sortie
                    TabControl1.SelectedTab = Tab2

                Else
                    'si ce n'est pas un fichier .hbs :
                    pathsource.Text = args

                    'On calcul la taille du fichier sources et des "futurs" fichiers .hbs selon la valeur de nbrsplit
                    Dim lnginit As Long = FileLen(pathsource.Text)
                    Dim lngsplit As Long = lnginit / nbrsplit.Value
                    Dim lnglastsplit As Long
                    If lngsplit < CDec(lnginit / nbrsplit.Value) Then lngsplit += 1
                    lnglastsplit = lnginit - (lngsplit * (nbrsplit.Value - 1))

                    Dim taillesource As Long = FileLen(pathsource.Text)
                    Dim lentaille As Integer = taillesource.ToString.Length

                    'Calcul la taille du fichier source et l'affiche
                    Select Case lentaille
                        Case Is <= 3
                            lbllngsource.Text = "Taille du fichier à spliter :" & taillesource.ToString & " Octets"
                        Case Is > 3
                            lbllngsource.Text = "Taille du fichier à spliter :" & taillesource / 1024.ToString & " Ko (" & taillesource.ToString & " Octets)"
                        Case Is > 6
                            lbllngsource.Text = "Taille du fichier à spliter :" & (taillesource / 1024) / 1024.ToString & " Mo (" & taillesource.ToString & " Octets)"
                        Case Is > 9
                            lbllngsource.Text = "Taille du fichier à spliter :" & ((taillesource / 1024) / 1024) / 1024.ToString & " Go (" & taillesource.ToString & " Octets)"
                    End Select
                    'affiche la taille des "futurs" fichiers splittés
                    lngfiles.Text = "Tailles des fichiers splittés: " & lngsplit.ToString
                    lnglfile.Text = "Taille du dernier fichier splitté : " & lnglastsplit.ToString
                End If
            End If
        End If
    End Sub

    Private Sub split(ByVal nbrfile As Integer, ByVal chemin1 As String)
        Dim lnginit As Long
        Dim lngsplit As Long
        Dim lnglastsplit As Long
        Dim worktime As Long = Environment.TickCount 'on garde la valeur du tickcount (qui renvoie le nbre de millisecondes ecoulées depuis le demarrage de windows) pour calculer le temps d'execution de la procédure
        Dim hb As New IO.BinaryReader(IO.File.OpenRead(chemin1)) 'on defini donc hb comme "binaryreader" , et on y ouvre le chemin contenu dans la string chemin1
        Dim file_a(FileLen(chemin1)) As Byte 'on crée un tableau de byte donc le nbre de cellules est egale à la taille du fichiers en octets
        Dim i As Integer

        hb.BaseStream.Read(file_a, 0, FileLen(chemin1)) 'on lit le fichier dans les tableau teststr

        'on calcul la tailles des fichiers .hbs selon le nbre de splits demandés
        lnginit = FileLen(chemin1)
        lngsplit = lnginit / nbrfile
        If lngsplit > CDec(lnginit / nbrfile) Then lngsplit += 1
        lnglastsplit = lnginit - (lngsplit * (nbrfile - 1))

        'ecriture des fichiers .hbs, sauf le dernier qui n'aura surement pas la meme taille :
        For i = 0 To nbrfile - 2
            Dim hbwrite As New IO.BinaryWriter(IO.File.OpenWrite(chemin1 & "." & (i + 1).ToString & "_" & nbrfile.ToString & ".hbs"))
            hbwrite.BaseStream.Write(file_a, (i * lngsplit), lngsplit)
            hbwrite.Close()
            hbwrite = Nothing
            Application.DoEvents()
        Next i

        'ecriture maintenant du dernier fichiers hbs, qui doit faire qq octets de moins que les autres, selon la taille du fichier source
        Dim hbwrite2 As New IO.BinaryWriter(IO.File.OpenWrite(chemin1 & "." & (i + 1).ToString & "_" & nbrfile.ToString & ".hbs"))
        hbwrite2.BaseStream.Write(file_a, ((nbrfile - 1) * lngsplit), lnglastsplit)
        hbwrite2.Close()

        Dim splittm As String = ((CLng(Environment.TickCount) - worktime) / 1000).ToString & " secondes"
        MsgBox("Le fichier " & chemin1 & " a été splitté avec succés en " & splittm)
    End Sub

    Private Sub unsplit(ByVal nbrfile As Integer, ByVal chemin2() As String, ByVal chemin1 As String)
        Dim i As Integer
        Dim lngsplit As Long
        Dim file_A() As Byte 'on crée un tableau de byte donc le nbre de cellules est egale à la taille du fichiers en octets
        Dim n As Long
        Dim worktime As Long = Environment.TickCount 'on garde la valeur du tickcount (qui renvoie le nbre de millisecondes ecoulées depuis le demarrage de windows) pour calculer le temps d'execution de la procédure
        For i = 0 To nbrfile - 1 'on lance la boucle le meme nbre de fois qu'il y a de fichiers
            Dim hb As New IO.BinaryReader(IO.File.OpenRead(chemin2(i + 1)))
            ReDim file_A(FileLen(chemin2(i + 1)) - 1) 'on redimensionne le tableau de la taille du fichier actuel
            hb.BaseStream.Read(file_A, 0, FileLen(chemin2(i + 1))) 'DEBUG UPDATE !!  'on stocke dans ce tableau TOUTS les bytes du fichier
            Dim fs As FileStream = New FileStream(chemin1, FileMode.OpenOrCreate) 'on defini le filestream
            Dim wr As BinaryWriter = New BinaryWriter(fs) 'on defini wr comme objet d'ecriture binaire
            wr.BaseStream.Seek(0, SeekOrigin.End) 'on defini le pointeur à la fin du fichier cible
            wr.Write(file_A) 'on ecrit le contenu du tableau
            fs.Close() 'on ferme tout
            wr.Close() 'on ferme tout
            hb.Close() 'on ferme tout
        Next i
        MsgBox("Effectué en " & ((CLng(Environment.TickCount) - worktime) / 1000).ToString & " secondes")
    End Sub


    Function get_nbrfile(ByVal firstpath As String) As Integer
        'fonction qui renvoie le nombre de fichiers d'un groupe à partir du chemin d'un fichier hbs
        Dim temp As String
        temp = Mid(firstpath, 1, Len(firstpath) - 4)
        Dim pos As Integer
        pos = InStrRev(temp, "_") + 1
        Return CInt(Mid(temp, pos))
    End Function

    Function get_nbrcurrentfile(ByVal firstpath As String) As Integer
        'fonction qui renvoie le numero d'un fichier hbs a partir de son chemin
        Dim temp As String
        temp = Mid(firstpath, 1, Len(firstpath) - 4)
        Dim pos(1) As Integer
        pos(0) = InStrRev(temp, ".")
        pos(1) = InStrRev(temp, "_")
        Return CInt(Mid(firstpath, (pos(0) + 1), (pos(1) - pos(0) - 1)))
    End Function

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
        'boutton split, lance la demande de nom de fichier si cela n'a pas été fait
        Dim chemin1 As String
        If pathsource.Text = "" Then
            of1.Title = "Choisissez le fichier à splitter"
            of1.Filter = "*.*|*.*"
            of1.InitialDirectory = Environment.CurrentDirectory
            of1.ShowDialog()
            If of1.FileName = "" Then
                of1.Dispose()
                Exit Sub
            End If
            chemin1 = of1.FileName
        Else
            chemin1 = pathsource.Text
        End If
        of1.Dispose()
        Dim nbrfile As Integer = nbrsplit.Value
        Dim chemin2(nbrfile) As String
        split(nbrfile, chemin1)

    End Sub

    Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
        'selectionne et affiche les calculs de tailles d'un fichier à splitter deja vu au dessus
        of1.Title = "Choisissez le fichier à splitter"
        of1.Filter = "*.*|*.*"
        of1.InitialDirectory = Environment.CurrentDirectory
        of1.ShowDialog()
        If of1.FileName <> "" Then
            pathsource.Text = of1.FileName
            Dim lnginit As Long
            Dim lngsplit As Long
            Dim lnglastsplit As Long

            lnginit = FileLen(pathsource.Text)
            lngsplit = lnginit / nbrsplit.Value
            If lngsplit < CDec(lnginit / nbrsplit.Value) Then lngsplit += 1
            lnglastsplit = lnginit - (lngsplit * (nbrsplit.Value - 1))
            'lnglastsplit = lngsplit + (lnginit Mod nbrsplit.Value)
            Dim taillesource As Long = FileLen(pathsource.Text)
            Dim lentaille As Integer = taillesource.ToString.Length



            Select Case lentaille
                Case Is <= 3
                    lbllngsource.Text = "Taille du fichier à spliter :" & taillesource.ToString & " Octets"
                Case Is > 3
                    lbllngsource.Text = "Taille du fichier à spliter :" & taillesource / 1024.ToString & " Ko (" & taillesource.ToString & " Octets)"
                Case Is > 6
                    lbllngsource.Text = "Taille du fichier à spliter :" & (taillesource / 1024) / 1024.ToString & " Mo (" & taillesource.ToString & " Octets)"
                Case Is > 9
                    lbllngsource.Text = "Taille du fichier à spliter :" & ((taillesource / 1024) / 1024) / 1024.ToString & " Go (" & taillesource.ToString & " Octets)"
            End Select
            lngfiles.Text = "Tailles des fichiers splittés: " & lngsplit.ToString
            lnglfile.Text = "Taille du dernier fichier splitté : " & lnglastsplit.ToString
        End If
    End Sub

    Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
        'Selectionne un fichier .hbs, affiche la tailles de ces fichiers et en determine la taille du fichier a resplitter
        'le code a deja été utilise plus haut dans le form load, il aurait été plus pratique de faire un sub, je sais
        of1.Title = "Choisissez un des fichiers d'un groupe hbs"
        of1.Filter = "hbs files *.hbs|*.hbs"
        of1.InitialDirectory = Environment.CurrentDirectory
        of1.ShowDialog()
        If of1.FileName = "" Then Exit Sub
        pathsource2.Text = of1.FileName
        lblnbrfile.Text = "Nombre de fichiers .hbs :" & get_nbrfile(pathsource2.Text)
        lbllngfiles.Text = "Taille des fichiers .hbs :" & (FileLen(pathsource2.Text) / 1024).ToString & " Ko (" & FileLen(pathsource2.Text) & " octets )"
        lbllnglfile.Text = "Taille du dernier fichier .hbs :" & (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")) / 1024).ToString & " Ko (" & FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text) & "_")).ToString & " octets)"

        Dim tailledesplit As Long = (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_"))))
        Dim lentaille As Integer = tailledesplit.ToString.Length

        'petit calcul de fichier, selon sa taille on l'affichera en octet, kilo octets, megaoctets ou giga octets :
        Select Case lentaille
            Case Is <= 3
                lblunsplitlng.Text = "Taille du fichier à déspliter :" & tailledesplit.ToString & " Octets"
            Case Is > 3
                lblunsplitlng.Text = "Taille du fichier à déspliter :" & tailledesplit / 1024.ToString & " Ko (" & (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")))).ToString & " Octets)"
            Case Is > 6
                lblunsplitlng.Text = "Taille du fichier à déspliter :" & (tailledesplit / 1024) / 1024.ToString & " Mo (" & (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")))).ToString & " Octets)"
            Case Is > 9
                lblunsplitlng.Text = "Taille du fichier à déspliter :" & ((tailledesplit / 1024) / 1024) / 1024.ToString & " Go (" & (((FileLen(pathsource2.Text)) * (get_nbrfile(pathsource2.Text) - 1)) + (FileLen(Replace(pathsource2.Text, "." & get_nbrcurrentfile(pathsource2.Text).ToString & "_", "." & get_nbrfile(pathsource2.Text).ToString & "_")))).ToString & " Octets)"
        End Select
    End Sub

    Private Sub Button9_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button9.Click
        'si il n'y a pas encore de fichier .hbs selectionné, relance la selection
        If pathsource2.Text = "" Then
            of1.Title = "Choisissez un des fichiers d'un groupe hbs"
            of1.Filter = "hbs files *.hbs|*.hbs"
            of1.InitialDirectory = Environment.CurrentDirectory
            of1.ShowDialog()
            If of1.FileName = "" Then
                of1.Dispose()
                Exit Sub
            End If
            pathsource2.Text = of1.FileName
        End If
        Dim chemin1 As String = pathsource2.Text
        of1.Dispose()
        Dim nbrfile As Integer = get_nbrfile(chemin1)
        Dim temp As String
        temp = Mid(chemin1, 1, Len(chemin1) - 4)
        'depuis le chemin des fichiers .hbs et les mets dans la tableau chemin2()
        Dim chemin2(nbrfile) As String
        Dim i As Integer
        For i = 1 To nbrfile
            chemin2(i) = Replace(chemin1, get_nbrcurrentfile(chemin1) & Mid(chemin1, InStrRev(chemin1, "_")), i.ToString & Mid(chemin1, InStrRev(chemin1, "_")))
        Next
        Dim cheminfin As String = Mid(temp, 1, InStrRev(temp, ".") - 1)
        sf1.Title = "Enregistrer le fichier sous"
        sf1.Filter = "*" & Mid(cheminfin, InStrRev(cheminfin, "."), Len(cheminfin) - InStrRev(cheminfin, ".") + 1) & "|*" & Mid(cheminfin, InStrRev(cheminfin, "."), Len(cheminfin) - InStrRev(cheminfin, ".") + 1) 'on recupere l'extension du fichier source pour ne proposer l'enregistrement que sous cette extension
        sf1.FileName = Mid(cheminfin, InStrRev(cheminfin, "\") + 1, Len(cheminfin) - InStrRev(cheminfin, "\")) 'on recupere le nom de fichier d'origine pour le proposer par defaut à l'enregistrement
        sf1.ShowDialog()
        If sf1.FileName = "" Then Exit Sub
        'lance la function unsplit
        unsplit(nbrfile, chemin2, sf1.FileName)
    End Sub

    Private Sub nbrsplit_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles nbrsplit.ValueChanged
        'A chaque fois que la valeur est changé, on recalcule la taille des fichiers
        If pathsource.Text = "" Then Exit Sub
        Dim lnginit As Long
        Dim lngsplit As Long
        Dim lnglastsplit As Long
        'On recalcul la taille de l'eventuel split :
        lnginit = FileLen(pathsource.Text)
        lngsplit = lnginit / nbrsplit.Value
        If lngsplit < CDec(lnginit / nbrsplit.Value) Then lngsplit += 1
        lnglastsplit = lnginit - (lngsplit * (nbrsplit.Value - 1))
        Dim taillesource As Long = FileLen(pathsource.Text)
        Dim lentaille As Integer = taillesource.ToString.Length
        'petit calcul de fichier, selon sa taille on l'affichera en octet, kilo octets, megaoctets ou giga octets :
        Select Case lentaille
            Case Is <= 3
                lbllngsource.Text = "Taille du fichier à spliter :" & taillesource.ToString & " Octets"
            Case Is > 3
                lbllngsource.Text = "Taille du fichier à spliter :" & taillesource / 1024.ToString & " Ko (" & taillesource.ToString & " Octets)"
            Case Is > 6
                lbllngsource.Text = "Taille du fichier à spliter :" & (taillesource / 1024) / 1024.ToString & " Mo (" & taillesource.ToString & " Octets)"
            Case Is > 9
                lbllngsource.Text = "Taille du fichier à spliter :" & ((taillesource / 1024) / 1024) / 1024.ToString & " Go (" & taillesource.ToString & " Octets)"
        End Select
        lngfiles.Text = "Tailles des fichiers splittés: " & lngsplit.ToString
        lnglfile.Text = "Taille du dernier fichier splitté : " & lnglastsplit.ToString

    End Sub

    Public Function hb_inside(ByVal source As String, ByVal stravant As String, ByVal strapres As String)
        'fonction qui renvoie ce qu'il y a entre deux sous-string, dans une string 
        If InStr(1, source, stravant) > 0 Then
            If InStr((InStr(1, source, stravant)), source, strapres) > 0 Then
                If Mid(source, (InStr(1, source, stravant) + Len(stravant)), InStr((InStr(1, source, stravant) + Len(stravant)), source, strapres) - (InStr(1, source, stravant) + Len(stravant))) <> "" Then
                    Return Mid(source, (InStr(1, source, stravant) + Len(stravant)), InStr((InStr(1, source, stravant) + Len(stravant)), source, strapres) - (InStr(1, source, stravant) + Len(stravant)))
                End If
            End If
        End If
    End Function
End Class
 

Conclusion

Ce n'est pas specialement original mais c'etait en partie pour voir les performances de cette methode à laquelle j'ai penser en cours (pas d'info nan...de dessin technique...arg!) ... le resultat est plutot correct, meme pour des gros fichiers types iso de 700Mo .
Laissez vos avis, remarques, critiques en commentaires :)

 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   WindowsApplication17
    •   bin
      • WindowsApplication17.exeTélécharger ce fichier [Réservé aux membres club]49 152 octets
      • WindowsApplication17.pdbTélécharger ce fichier [Réservé aux membres club]34 304 octets
    •   obj
      •   Debug
        • temp
        • TempPE
        • WindowsApplication17.exeTélécharger ce fichier [Réservé aux membres club]49 152 octets
        • WindowsApplication17.Form1.resourcesTélécharger ce fichier [Réservé aux membres club]6 581 octets
        • WindowsApplication17.pdbTélécharger ce fichier [Réservé aux membres club]34 304 octets
    • AssemblyInfo.vbTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 028 octets
    • hb_splittah beta1 rls.resxTélécharger ce fichier [Réservé aux membres club]Voir ce fichier10 894 octets
    • hb_splittah beta1 rls.vbTélécharger ce fichier [Réservé aux membres club]Voir ce fichier37 871 octets
    • HBS.slnTélécharger ce fichier [Réservé aux membres club]Voir ce fichier891 octets
    • HBS.sln.oldTélécharger ce fichier [Réservé aux membres club]902 octets
    • HBS.suoTélécharger ce fichier [Réservé aux membres club]8 192 octets