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?