Binärdatei lesen und speichern die größer als der Arbeitsspeicher ist
Habe Folgendes bei Microsoft gefunden
Ich will die Daten natürlich nach den lesen und vor dem schreiben verändern.
Habe das mal mit einer Datei von 103 Byte und einem bufferSize von 50 probiert.
Die Zieldatei ist dann 150 Byte groß, mit 47 Byte Müll aus dem Lesevorgang vor dem letzten.
Man kann natürlich vorher die Dateigröße abfragen, sich ein bufferSize ausrechnen und bei einer Primzahl noch einen letzten Speichervorgang mit dem Rest programmieren.
Aber da muss es doch etwas Besseres geben?
CodeTags korrigiert ~VaporiZed
Habe Folgendes bei Microsoft gefunden
VB.NET-Quellcode
- Public Sub CopyBinaryFile(ByVal path As String,
- ByVal copyPath As String,
- ByVal bufferSize As Integer,
- ByVal overwrite As Boolean)
- Dim inputFile = IO.File.Open(path, IO.FileMode.Open)
- If overwrite AndAlso My.Computer.FileSystem.FileExists(copyPath) Then
- My.Computer.FileSystem.DeleteFile(copyPath)
- End If
- ' Adjust array length for VB array declaration.
- Dim bytes = New Byte(bufferSize - 1) {}
- While inputFile.Read(bytes, 0, bufferSize) > 0
- My.Computer.FileSystem.WriteAllBytes(copyPath, bytes, True)
- End While
- inputFile.Close()
- End Sub
Ich will die Daten natürlich nach den lesen und vor dem schreiben verändern.
Habe das mal mit einer Datei von 103 Byte und einem bufferSize von 50 probiert.
Die Zieldatei ist dann 150 Byte groß, mit 47 Byte Müll aus dem Lesevorgang vor dem letzten.
Man kann natürlich vorher die Dateigröße abfragen, sich ein bufferSize ausrechnen und bei einer Primzahl noch einen letzten Speichervorgang mit dem Rest programmieren.
Aber da muss es doch etwas Besseres geben?
CodeTags korrigiert ~VaporiZed
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()