我聲明並分配一些字節數組。我想用read(字節數組,偏移量,字節長度)方法初始化這些數組。第一個讀取方法語句似乎正確地將前32個字節讀入數組中。但是,第二個讀取方法不會拋出indexOutOfBounds異常。如何通過使用DataInputStream類指定偏移量和字節長度來將字節讀入數組?
規範的偏移值:
offset 0, length 32 bytes - contains some text
offset 32, length 2 bytes - contains something else
etc
下面是代碼:
File file = new File("somebinaryfile.dat");
DataInputStream in = new DataInputStream(new FileInputStream(file));
byte[] array1 = new byte[32]; // first array
byte[] array2 = new byte[2]; // second array
in.read(array1, 0, 32);
in.read(array2, 32, 2);
in.close();
我的假設下工作(可能不正確地)的讀取位置將在每一個新的自動增加.read()方法語句。但是,如果我將34個元素分配給array2而不是2個元素,則不會引發異常。因此,看起來前34個字節正在讀入array2,而不是最後2個字節,即使我指定了偏移量和字節長度...
我意識到RandomAccessFile類有一個漂亮的.seek(n ) 方法。不過,我非常固執,想要堅持DataInputStream。
正確使用的任何建議,以使用指定的偏移量和字節長度獲得的數據初始化兩個數組?