FileChannel gibt die falsche Dateigröße der Datei im Assets-Ordner zurück.

Ich versuche ein @ zu lesFile aus dem rohen Ordner in meinem Vermögen mit einemFileInputStream.

So erstelle ich dasFileInputStream:

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

Nachdem ich versuche, die Daten aus dem @ zu lesFile so was

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();

Aber das funktioniert nicht. Aus irgendeinem GrundfileChannel.size() gibt eine große Zahl zurück. Ich habe eine Testdatei, die genau 13 Byte lang ist, aberfileChannel.size() gibt 1126498 zurück! Und außerdem, wenn ich die Größe ignoriere und nur anfange, die zurückgegebenen Bytes zu lesen, stimmen meine Testdateien überhaupt nicht überein!

Also, was ist hier los? Und gibt es eine Möglichkeit, das zu beheben?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage