Comment obtenir FileInputStream de Fichier dans le dossier des actifs

Je sais comment utiliser le AssetManager de lire un File de la res/raw répertoire avec un InputStream, mais pour mon cas d'utilisation, j'ai besoin d'un FileInputStream. La raison que j'ai besoin d'un FileInputStream plus précisément, c'est parce que j'ai besoin pour obtenir le FileChannel objet à partir d'elle, en appelant getChannel().

C'est le code que j'ai à ce jour, il lit les données (dans mon cas une liste de primitives) à partir d'un File:

public static int[] loadByMappedBuffer(Context context, String filename) throws IOException{
    FileInputStream fis = context.openFileInput(filename);
    FileChannel ch = fis.getChannel();

    MappedByteBuffer mbuff = ch.map(MapMode.READ_ONLY, 0, ch.size());
    IntBuffer ibuff = mbuff.asIntBuffer();

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

    fis.close();
    ch.close();

    return array;
} 

J'avais essayé de créer File à partir d'un Uri, mais les résultats dans un FileNotFoundException:

Uri uri = Uri.parse("android.resource://com.example.empty/raw/file");
File file = new File(uri.getPath());
FileInputStream fis = new FileInputStream(file);

Est-il un moyen que je peux obtenir un FileInputStream à un File dans le res/raw répertoire?

Je pense que votre URL est le problème.Et vous devez ajouter dans le répertoire actif.
Donc, tout ce que vous devez est de lire le contenu du fichier comme int tableau? Suis-je la corriger?
oui, mais j'ai besoin de le faire rapidement, la méthode que j'ai donné lit 80*4 octets et de le transformer en int tableau de 6 à 7 ms sur mon PC
J'avais aussi essayé Uri uri = Uri.parse("android.resource://com.example.empty/" + R.raw.file);
Essayez ceci: InputStream myInput = myContext.getAssets().ouvert(YOUR_FILE_NAME)

OriginalL'auteur Mike Herasimov | 2015-05-20