所以我有一些代碼從文件中讀取一定數量的字節並返回結果字節數組(這基本上用於分塊文件以通過網絡發送(最終)爲base64編碼的ascii文本)。Java:如何「修剪」一個字節數組?
它工作正常,除了生成文件的最後一個塊時,它不是一個完整的塊。因此,得到的字節數組不是滿的。然而,它的大小是一個常量,這意味着文件被重新組合,最後會附加一大堆額外的數據(可能是0)。
我該怎麼做才能讓文件的最後一個塊的byte []真的只包含它需要的數據?代碼如下所示:
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;
}
所以,如果CHUNKSIZE比文件中剩餘的字節更大,一個全尺寸的byte []獲取返回,但其只是半滿的數據。
從上方,而不是System.arraycopy後使用Arrays.copyOf的長度(其拋出一個例外),這工作完美!謝謝! – 2009-12-17 02:29:27
更正,我有一個比較錯字,應該使用'=='而不是'='。 – notnoop 2009-12-17 02:37:27
@Erin Drummond:'System.arraycopy()'拋出的異常是什麼? – Asaph 2009-12-17 03:00:54