2012-04-15 12 views
0

Ich versuche eine Datei von einem bestimmten Punkt in der Datei für eine bestimmte Anzahl von Bytes zu lesen.Wie liest man eine "lange" Anzahl von Bytes aus der Datei mit RandomAccessFile in Java

RandomAccessFile randomAccessFile = new RandomAccessFile(_file, "r"); randomAccessFile.seek(_offSet);
randomAccessFile.read(buffer, 0, _size);

Wo die _offSet und _size Typ "long" ist.

Das Problem ist, Lese-Methode dauert nur "int". Ich habe das Offset-Problem überwunden, indem ich "seek" verwendet habe. Wie überwinde ich die Menge der zu lesenden Bytes?

+0

Warten. Planen Sie tatsächlich, mehr als 2 Milliarden Bytes einzulesen? –

+0

... aber es muss in einem Anruf sein? ;) –

Antwort

1

Es gibt keinen Vorteil, den ich sehen kann, wenn ich versuche, mehr als 2 GB gleichzeitig zu lesen (außer Einfachheit) Sie können mehr als 2 GB mit mehreren Anrufen lesen.

+0

Sie können nicht einmal mehr als 2^31-1 Elemente in ein Array in Java einfügen. –

+0

Oder ByteBuffer, aber Sie können mehrere Byte [] oder ByteBuffer in einer Sammlung oder einem Array lesen. –

+0

Ich meine, um fair zu sein, könnten Sie wahrscheinlich eine benutzerdefinierte Liste oder Pufferimplementierung entwerfen, die intern mehrere 'ByteBuffer's oder Arrays verwendet, aber eine API zur Verfügung stellt, mit der Sie mit 'long's indexieren können. –

0

Wo würden Sie sie lesen? Sie können ein Array trotzdem nicht so groß deklarieren. Dein Problem existiert nicht.

+0

Ich plane, es in mehrere Arrays zu lesen. – choppy

+0

@choppy Macht keinen Unterschied. Jedes Array ist durch Java auf 2^31 Bytes begrenzt, d. H. Die maximale ganze Zahl, so daß 'read()', das die gleiche Grenze hat, immer noch kein Problem ist. – EJP

Verwandte Themen