Hi,
ich hab mir einen Code zusammengebaut und hab mir gedacht dass der auch von anderen gut gebraucht werden könnte:
Bei Fragen könnt ihr euch gern melden!
vG,
Lupus
ich hab mir einen Code zusammengebaut und hab mir gedacht dass der auch von anderen gut gebraucht werden könnte:
VB.NET-Quellcode
- Dim Namen As New ArrayList, Datei As String, Ordner As String
- 'Namen für die Dateien, die später wieder gelöscht werden sollen
- Private Sub Teilen(ByVal dat As String, ByVal ord As String, ByVal gr As Integer)
- ' dat: Dateiname
- ' ord: Ordner für geteilte Dateien
- ' gr: Größe der einzelnden Dateien in Byte
- Datei = dat
- Ordner = ord
- Dim fs As IO.FileStream
- fs = New IO.FileStream(Datei, IO.FileMode.Open)
- Dim br As New IO.BinaryReader(fs) 'Datei öffnen
- Dim bytes As Byte(), i As Integer = 0
- Do
- If br.BaseStream.Position + gr <= br.BaseStream.Length Then ' Prüfung ob Datei am Ende
- bytes = br.ReadBytes(gr) 'Bytes auslesen
- SchreibDatei(bytes, i) 'Bytes in Datei schreiben
- Else
- bytes = br.ReadBytes(br.BaseStream.Length - br.BaseStream.Position) 'Bytes auslesen
- SchreibDatei(bytes, i) 'Bytes in Datei schreiben
- Exit Do
- End If
- i += 1
- Application.DoEvents()
- Loop
- br.Close() 'Datei schließen
- Dim datname As String
- Dim fi As New IO.FileInfo(Datei)
- 'Dateiname zusammensetzen
- datname = fi.Name.Substring(0, fi.Name.Length - fi.Extension.Length) & "_zs.bat"
- 'Bat-Datei zum Zusammenfügen der Dateien
- fs = New IO.FileStream(IO.Path.Combine(Ordner, datname), IO.FileMode.Create)
- Dim bat As New IO.StreamWriter(fs)
- bat.WriteLine("@echo off") 'Meldung deaktivieren
- Dim str As String = "copy /b " '/b für Binär-Kopieen
- i = 0
- Dim tmpname As String = fi.Name.Substring(0, fi.Name.Length - fi.Extension.Length) & "_zs.tmp"
- For Each a As String In Namen
- If i = 50 Then 'Begrenzung für Zeilenlänge
- str = str.Substring(0, str.Length - 2) & tmpname
- bat.WriteLine(str)
- str = "copy /b " & tmpname & " + "
- i = 0
- End If
- str &= """" & a & """ + "
- i += 1
- Application.DoEvents()
- Next
- str = str.Substring(0, str.Length - 2) & fi.Name
- bat.WriteLine(str)
- ' alte Dateien wieder löschen lassen
- str = "del "
- i = 0
- For Each a As String In Namen
- If i = 50 Then
- str = str.Substring(0, str.Length - 2) & tmpname
- bat.WriteLine(str)
- str = "del "
- i = 0
- End If
- str &= """" & a & """ , "
- i += 1
- Next
- bat.WriteLine(str)
- bat.WriteLine("del " & tmpname)
- bat.WriteLine("del " & datname)
- bat.Close()
- MessageBox.Show("Datei erfolgreich geteilt!", "FileSplit", MessageBoxButtons.OK, MessageBoxIcon.Information)
- End Sub
- Private Sub SchreibDatei(ByVal bytes As Byte(), ByVal Name As Integer)
- Dim datname As String
- Dim fi As New IO.FileInfo(Datei)
- 'Dateiname zusammensetzen
- datname = fi.Name.Substring(0, fi.Name.Length - fi.Extension.Length) & "_" & Name.ToString & ".lsp"
- Namen.Add(datname)
- Dim bw As New IO.BinaryWriter(New IO.FileStream(IO.Path.Combine(Ordner, datname), IO.FileMode.Create))
- bw.Write(bytes)
- bw.Close()
- End Sub
Bei Fragen könnt ihr euch gern melden!
vG,
Lupus