FileStream Lesen/Schreiben Methode ist die Beschränkung
FileStream-lese - /schreib-Methode kann nur integer
Wert als Länge. Aber FileStream
- Objekt zurückgibt, Länge in long
. In diesem Fall, was ist, wenn die Dateigröße ist größer als integer
Wert (ungefähr mehr als 2 GB). Dann, wie Sie FileStream-lese - /schreib-Methode behandeln long
Wert.
InformationsquelleAutor der Frage jams | 2011-04-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dann das Lesen und schreiben in mehrere Teile. Die CLR hat ein limit auf die Größe von einem bestimmten Objekt sowieso (auch um 2 GB wenn ich mich Recht erinnere, auch auf einem 64-bit-CLR), so dass Sie nicht haben konnte ein byte-array, das groß genug für Sie zu einem problem werden.
Sollten Sie immer die Schleife, wenn die das Lesen eh nicht, da Sie nicht garantieren können, dass ein Read-Aufruf liest so viele bytes, wie von Ihnen gewünscht, auch wenn es mehr Daten zu kommen.
EDIT: Lesen in Blöcken:
Schreiben in Blöcken wird davon abhängen, was du schreibst... es ist schwer, darüber zu sprechen in der Zusammenfassung.
InformationsquelleAutor der Antwort Jon Skeet
Gibt es keine Notwendigkeit, direkt zu schreiben, mehr als 2 GB Daten in einem Aufruf
Wenn Sie wirklich haben diesen Betrag gepuffert im Speicher zusammenhängend (? maby als ungesichert erworben UnmanagedMemoryStream zur Implementierung eines core-dump?) Sie könnte leicht batch-der schreibt in mehrerer Anrufe. Es wird auf die Festplatte geschrieben, in Blöcken von 512 K auf max 4k auf Aktueller hardware, eh.
Den großen Wert der 'streaming' - Schnittstellen ist, dass Sie es anywhich Weg. In der Tat, wenn Sie schauen, um in ihm finden Sie, dass die CLR-Arrays (und alles andere) sind eigentlich begrenzt auf 2 GB
Update
Da Sie jetzt zugegeben, dass Sie im Grunde kopieren möchten, streams, könnten Sie besser gedient mit einer instant-Lösung. Es ist
File.Copy
Oder es ist die standard-Antwort
Vergessen Sie nicht über
Flushing
Closing
undDisposing
Ihre Streams als geeignetewenn Sie die Handhabung des streams manuell.Cheers
InformationsquelleAutor der Antwort sehe
soweit ich weiß, können Sie immer noch versuchen zu bekommen, um die richtige position im stream.
werden Sie wahrscheinlich haben, um eine Schleife zu tun, und wenn Sie mehr Lesen wollen als 2 gigs wou werden müssen, um eine Schleife hier zu
InformationsquelleAutor der Antwort DarkSquirrel42