Datei teilen

    • VB.NET

      Datei teilen

      Hi,

      ich hab mir einen Code zusammengebaut und hab mir gedacht dass der auch von anderen gut gebraucht werden könnte:

      VB.NET-Quellcode

      1. Dim Namen As New ArrayList, Datei As String, Ordner As String
      2. 'Namen für die Dateien, die später wieder gelöscht werden sollen
      3. Private Sub Teilen(ByVal dat As String, ByVal ord As String, ByVal gr As Integer)
      4. ' dat: Dateiname
      5. ' ord: Ordner für geteilte Dateien
      6. ' gr: Größe der einzelnden Dateien in Byte
      7. Datei = dat
      8. Ordner = ord
      9. Dim fs As IO.FileStream
      10. fs = New IO.FileStream(Datei, IO.FileMode.Open)
      11. Dim br As New IO.BinaryReader(fs) 'Datei öffnen
      12. Dim bytes As Byte(), i As Integer = 0
      13. Do
      14. If br.BaseStream.Position + gr <= br.BaseStream.Length Then ' Prüfung ob Datei am Ende
      15. bytes = br.ReadBytes(gr) 'Bytes auslesen
      16. SchreibDatei(bytes, i) 'Bytes in Datei schreiben
      17. Else
      18. bytes = br.ReadBytes(br.BaseStream.Length - br.BaseStream.Position) 'Bytes auslesen
      19. SchreibDatei(bytes, i) 'Bytes in Datei schreiben
      20. Exit Do
      21. End If
      22. i += 1
      23. Application.DoEvents()
      24. Loop
      25. br.Close() 'Datei schließen
      26. Dim datname As String
      27. Dim fi As New IO.FileInfo(Datei)
      28. 'Dateiname zusammensetzen
      29. datname = fi.Name.Substring(0, fi.Name.Length - fi.Extension.Length) & "_zs.bat"
      30. 'Bat-Datei zum Zusammenfügen der Dateien
      31. fs = New IO.FileStream(IO.Path.Combine(Ordner, datname), IO.FileMode.Create)
      32. Dim bat As New IO.StreamWriter(fs)
      33. bat.WriteLine("@echo off") 'Meldung deaktivieren
      34. Dim str As String = "copy /b " '/b für Binär-Kopieen
      35. i = 0
      36. Dim tmpname As String = fi.Name.Substring(0, fi.Name.Length - fi.Extension.Length) & "_zs.tmp"
      37. For Each a As String In Namen
      38. If i = 50 Then 'Begrenzung für Zeilenlänge
      39. str = str.Substring(0, str.Length - 2) & tmpname
      40. bat.WriteLine(str)
      41. str = "copy /b " & tmpname & " + "
      42. i = 0
      43. End If
      44. str &= """" & a & """ + "
      45. i += 1
      46. Application.DoEvents()
      47. Next
      48. str = str.Substring(0, str.Length - 2) & fi.Name
      49. bat.WriteLine(str)
      50. ' alte Dateien wieder löschen lassen
      51. str = "del "
      52. i = 0
      53. For Each a As String In Namen
      54. If i = 50 Then
      55. str = str.Substring(0, str.Length - 2) & tmpname
      56. bat.WriteLine(str)
      57. str = "del "
      58. i = 0
      59. End If
      60. str &= """" & a & """ , "
      61. i += 1
      62. Next
      63. bat.WriteLine(str)
      64. bat.WriteLine("del " & tmpname)
      65. bat.WriteLine("del " & datname)
      66. bat.Close()
      67. MessageBox.Show("Datei erfolgreich geteilt!", "FileSplit", MessageBoxButtons.OK, MessageBoxIcon.Information)
      68. End Sub
      69. Private Sub SchreibDatei(ByVal bytes As Byte(), ByVal Name As Integer)
      70. Dim datname As String
      71. Dim fi As New IO.FileInfo(Datei)
      72. 'Dateiname zusammensetzen
      73. datname = fi.Name.Substring(0, fi.Name.Length - fi.Extension.Length) & "_" & Name.ToString & ".lsp"
      74. Namen.Add(datname)
      75. Dim bw As New IO.BinaryWriter(New IO.FileStream(IO.Path.Combine(Ordner, datname), IO.FileMode.Create))
      76. bw.Write(bytes)
      77. bw.Close()
      78. End Sub

      Bei Fragen könnt ihr euch gern melden!

      vG,
      Lupus