Ist es möglich, eine große Binärdatei von einer bestimmten Position aus zu lesen?
Ich möchte die Datei nicht von Anfang an lesen, denn ich kann die Startposition und die Länge des benötigten Streams berechnen.
Ist es möglich, eine große Binärdatei von einer bestimmten Position aus zu lesen?
Ich möchte die Datei nicht von Anfang an lesen, denn ich kann die Startposition und die Länge des benötigten Streams berechnen.
Según @shenhengbin answord.
Utilice BinaryReader.BaseStream.Seek
.
using (BinaryReader b = new BinaryReader(File.Open("perls.bin", FileMode.Open)))
{
int pos = 50000;
int required = 2000;
// Seek to our required position.
b.BaseStream.Seek(pos, SeekOrigin.Begin);
// Read the next 2000 bytes.
byte[] by = b.ReadBytes(required);
}
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
0 Stimmen
Alles, was Sie tun müssen, ist die Änderung der
Position
Eigenschaft, oder verwenden Sie dieSeek
Methode. Sind Sie besorgt, dass die gesamte Datei in den Speicher geladen wird?0 Stimmen
Ja, ich möchte nicht die gesamte Datei in den Speicher laden. Ich verwende den BinaryReader und konnte die Methode Seek nicht finden. --> BinaryReader.BaseStream.Seek(), das ist die Lösung. ;-)
0 Stimmen
Sie müssen nicht befürchten, dass eine große Datei in den Speicher geladen wird. Ein Stream lädt immer nur einen Teil der Datei. Sonst könnten wir niemals große Dateien öffnen.