FileChannel devuelve un tamaño de archivo incorrecto del archivo en la carpeta de activos

Estoy tratando de leer unFile de la carpeta sin procesar en mis activos usando unFileInputStream.

Así es como creo elFileInputStream:

AssetManager assetManager = getAssets();
AssetFileDescriptor fileDescriptor = assetManager.openFd(fileName);
FileInputStream inputStream = new FileInputStream(fileDescriptor.getFileDescriptor());

Después de eso estoy tratando de leer los datos delFile Me gusta esto:

FileChannel fileChannel = inputStream.getChannel();

MappedByteBuffer mappedByteBuffer = fileChannel.map(FileChannel.MapMode.READ_ONLY, 0, fileChannel.size());
IntBuffer intBuffer = mappedByteBuffer.asIntBuffer();

int[] array = new int[intBuffer.limit()];
intBuffer.get(array);

inputStream.close();
fileChannel.close();

Pero esto no funciona. Por alguna razónfileChannel.size() devuelve un gran número Tengo un archivo de prueba que tiene exactamente 13 bytes de longitud, perofileChannel.size() devuelve 1126498! Y, además, si ignoro el tamaño y empiezo a leer los bytes devueltos, ¡no coinciden en absoluto con mi archivo de prueba!

Entonces, ¿qué está pasando aquí? ¿Y hay alguna manera de arreglar esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta