danke schon mal für eure Antworten. Ich hätte aber noch Fragen dazu:
1.) Welche Möglichkeit ist denn performanter? MappedByteBuffer oder Streaming?
2.) Hinsichtlich des Aufwands und des Anspruchs dürften beide Varianten ähnlich sein, richtig?
3.) Wie schneided dahingegen meine Idee mit dem wahlfreien Zugriff mittels RandomAccessFile ab?
4.) Über welche Größenordnung reden wir hier überhaupt, wenn man mit einer der genannten Varianten - was weiß ich - zB für jedes Byte einer 1GB großen Datei je eine XOR-Operation durchführen wollte?
zu 1.) Das kommt darauf an, wie viel Arbeitsspeicher du hast und wie groß die Dateien sind. Wenn es eher viele kleine Dateien sind, würde ich sie ganz klassisch mit java.io verarbeiten. Wenn du aber eher große Dateien und viel Arbeitsspeicher frei(!) hast, kann sich das Mapping lohnen.
zu 2.) Siehe 1.)
zu 3.) Das kommt darauf an, was du machen willst. Wenn du z.B. jedes Byte unabhängig vom anderen bearbeiten kannst, kannst/musst du anders vorgehen, als wenn du Abhängigkeiten beachten musst. Generell ist RandomAccessFile aber eher dazu gedacht, verschiedene Bytes an noch unbekannten Orten zu verarbeiten (also vor allem zu ändern). Wenn du aber sowieso die ganze Datei (von Anfang bis Ende) verarbeiten musst, lohnt sich RandomAccessFile üblicherweise nicht.
zu 4.) Siehe 3.) Die Laufzeit einer bloßen XOR-Verknüpfung liegt bei O(n), komplexere Operationen können aber mehr beanspruchen. Da müsstest du schon mit dem genauer werden, was du vorhast. Aber ich denke nicht, dass sich groß irgendetwas ändern wird.
Ark