Java: Wie "trim" ein byte-array?

So, ich habe einige code, der liest eine bestimmte Anzahl von bytes aus einer Datei und gibt das resultierende byte-array (das ist im Grunde verwendet, für chunking-up-Dateien zu senden sind, über das Netzwerk (irgendwann) base64-codierte ascii-text).

Funktioniert es einwandfrei, außer dass wenn der Letzte chunk der Datei generiert wird, ist es nicht, einen vollen chunk. Daher werden die resultierenden byte-array nicht voll ist. Es ist jedoch eine Konstante Größe, was bedeutet, dass die Datei wieder zusammengesetzt, es gibt eine ganze Reihe von zusätzlichen Daten (0 s vielleicht) am Ende angehängt.

Wie kann ich es so machen, dass das byte[] für den letzten chunk, der die Datei enthält nur die Daten, die er braucht? Der code sieht so aus:

 private byte[] readData(File f, int startByte, int chunkSize) throws Exception {
    RandomAccessFile raf = new RandomAccessFile(f, "r");
    raf.seek(startByte);
    byte[] data = new byte[chunkSize];
    raf.read(data);        
    raf.close();
    return data;
}

Also, wenn chunkSize größer ist als die restlichen bytes in die Datei, ein voller Größe byte[] wird zurückgegeben, aber es ist nur halb voll mit Daten.

Schreibe einen Kommentar