public int readBytes(byte[] buffer, int srcOffset, int destOffset, int count) throws IOException { if (isDeactivated()) { throw new IOException("Can't read from deactivated memory file."); } if (destOffset < 0 || destOffset > buffer.length || count < 0 || count > buffer.length - destOffset || srcOffset < 0 || srcOffset > mLength || count > mLength - srcOffset) { throw new IndexOutOfBoundsException(); } if(Build.VERSION.SDK_INT < 21) { return native_read_int(mFD, mAddressInt, buffer, srcOffset, destOffset, count, false); } else { return native_read_long(mFD, mAddressLong, buffer, srcOffset, destOffset, count, false); } }