Ich habe eine Datenstruktur implementiert, die auf meinem Computer funktioniert und jetzt versuche ich es in meine Android-Anwendung zu portieren. Ich öffne eine rohe .dat
Ressource und eine InputStream
bekommen, aber ich brauche eine FileInputStream
zu bekommen:Müssen AssetInputStream in FileInputStream konvertieren
FileInputStream fip = (FileInputStream) context.getResources().openRawResource(fileID);
FileChannel fc = fip.getChannel();
long bytesSizeOfFileChannel = fc.size();
MappedByteBuffer mbb = fc.map(FileChannel.MapMode.READ_ONLY, 0L, bytesSizeOfFileChannel);
...
Der obige Code führt die folgende Ausnahme, da ein Input nicht auf ein Fileinputstream gegossen werden kann, aber das ist genau das, was ich brauche:
java.lang.ClassCastException: android.content.res.AssetManager$AssetInputStream cannot be cast to java.io.FileInputStream
All mein Code ist auf diese FileChannel
mit einem FileInputStream bauen, also möchte ich es weiter verwenden. Gibt es einen Weg von einem InputStream
von context.getResources().openRawResource(fileID)
zu gehen und es dann in einen FileChannel
umzuwandeln?
Etwas relevante Beiträge, in denen ich nicht eine funktionierende Lösung für meinen Fall, android finden konnte:
How to convert InputStream to FileInputStream
Converting inputStream to FileInputStream?
Using FileChannel to write any InputStream?
nein, Ressource-Dateien sind keine „normale“ Dateien, dh sie in einem nicht existieren Dateisystem – pskink
Ich habe 2 Wochen daran gearbeitet. Wenn ich das nicht zur Arbeit bringen kann, werde ich noch mindestens 2 weitere Wochen lachen. – Joop
Warum können Sie InputStream nicht einfach verwenden? – pskink